]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Exception handling update
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 9 Mar 1998 18:13:46 +0000 (18:13 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 9 Mar 1998 18:13:46 +0000 (18:13 +0000)
git-svn-id: https://svn.dealii.org/trunk@49 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/include/lac/dfmatrix.h
deal.II/lac/include/lac/dsmatrix.h
deal.II/lac/include/lac/dvector.h
deal.II/lac/include/lac/ivector.h
deal.II/lac/source/dfmatrix.cc
deal.II/lac/source/dsmatrix.cc
deal.II/lac/source/dvector.cc
deal.II/lac/source/ivector.cc

index 861083594f6c4abaf4e1205a1b7d7a318dca246e..83b5f9ee09ff8bde6a800a9822b63091b5b4e17f 100644 (file)
 #include <lac/ivector.h>
 #endif
 
+#include <base/exceptions.h>
+
+
+
 /**
  *  Double precision full Matrix.
  *  Memory for Components is supplied explicitly <p>
@@ -154,8 +158,8 @@ class dFMatrix
                                      */
     double operator() (int i, int j) const
       {
-                                        //THROW2((i<0) || (i>=dim_image), IntError(IntError::Range,i));
-                                        //THROW2((j<0) || (j>=dim_range), IntError(IntError::Range,i));
+       Assert ((i>=0) && (i<dim_image), ExcInvalidIndex (i, dim_image));
+       Assert ((j>=0) && (j<dim_range), ExcInvalidIndex (i, dim_range));
        return el(i,j);
       }
 
@@ -164,8 +168,8 @@ class dFMatrix
                                      */
     double& operator() (int i, int j)
       {
-                                        //THROW2((i<0) || (i>=dim_image), IntError(IntError::Range,i));
-                                        //THROW2((j<0) || (j>=dim_range), IntError(IntError::Range,i));
+       Assert ((i>=0) && (i<dim_image), ExcInvalidIndex (i, dim_image));
+       Assert ((j>=0) && (j<dim_range), ExcInvalidIndex (i, dim_range));
        return el(i,j);
       }
 
@@ -349,5 +353,43 @@ class dFMatrix
                                      */
     void print(FILE* fp, const char* format = 0) const;
                                     //@}
+
+                                    /**
+                                     * Exception
+                                     */
+    DeclException2 (ExcInvalidIndex,
+                   int, int,
+                   << "The given index " << arg1
+                   << " should be less than " << arg2 << ".");
+                                    /**
+                                     * Exception
+                                     */
+    DeclException2 (ExcDimensionMismatch,
+                   int, int,
+                   << "The two dimensions " << arg1 << " and " << arg2
+                   << "do not match here.");
+                                    /**
+                                     * Exception
+                                     */
+    DeclException0 (ExcNotQuadratic);
+                                    /**
+                                     * Exception
+                                     */
+    DeclException0 (ExcInternalError);
+                                    /**
+                                     * Exception
+                                     */
+    DeclException3 (ExcInvalidDestination,
+                   int, int, int,
+                   << "Target region not in matrix: size in this direction="
+                   << arg1 << ", size of new matrix=" << arg2
+                   << ", offset=" << arg3);
+                                    /**
+                                     * Exception
+                                     */
+    DeclException1 (ExcNotImplemented,
+                   int,
+                   << "This function is not implemented for the given"
+                   << " matrix dimension " << arg1);
 };
 #endif
index 351d552f9bcb2b9faa88fd49f5180e87232fa9f7..4588e46af190dca92b04ad642391d0949c4dfb1e 100644 (file)
@@ -16,6 +16,9 @@
 #include <lac/ivector.h>
 #endif
 
+#include <base/exceptions.h>
+
+
 
 class ostream;
 template <int dim> class DoFHandler;
@@ -79,8 +82,28 @@ public:
     friend class ConstraintMatrix;
     friend class DoFHandler<1>;
     friend class DoFHandler<2>;
+
+                                    /**
+                                     * Exception
+                                     */
+    DeclException1 (ExcInvalidNumber,
+                   int,
+                   << "The provided number is invalid here: " << arg1);
+                                    /**
+                                     * Exception
+                                     */
+    DeclException2 (ExcInvalidIndex,
+                   int, int,
+                   << "The given index " << arg1
+                   << " should be less than " << arg2 << ".");
+
 };
 
+
+
+
+
+
 /*
 CLASS
    dSMatrix
index f1d1f36b98d8148b52126b54673aa40210bf68ec..91456b8b0919daf16c4088f862de235561935dfd 100644 (file)
@@ -18,6 +18,9 @@
 #include <lac/vectorbase.h>
 #endif
 
+#include <base/exceptions.h>
+
+
 
 /**
  *  Double precision Vector.
@@ -251,6 +254,24 @@ class dVector : public VectorBase
                                      */
     void print(const char* format = 0) const;
                                     //@}
+
+                                    /**
+                                     * Exception
+                                     */
+    DeclException2 (ExcInvalidIndex,
+                   int, int,
+                   << "The given index " << arg1
+                   << " should be less than " << arg2 << ".");
+                                    /**
+                                     * Exception
+                                     */
+    DeclException1 (ExcInvalidNumber,
+                   int,
+                   << "The provided number is invalid here: " << arg1);
+                                    /**
+                                     * Exception
+                                     */
+    DeclException0 (ExcOutOfMemory);
 };
 
 
@@ -264,13 +285,13 @@ inline int dVector::n() const
 
 inline double dVector::operator() (int i) const
 {
-                                   //THROW2( (i<0) || (i>=dim), IntError(IntError::Range,i));
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
   return val[i];
 }
 
 inline double& dVector::operator() (int i)
 {
-                                   //THROW2( (i<0) || (i>=dim), IntError(IntError::Range,i));
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
   return val[i];
 }
 
index e9b3a1c43e55a9b9d26fbf05d64ce1dc0217f86d..39023fffd69010101b4001ebe875cb41f626b6ad 100644 (file)
@@ -11,6 +11,7 @@
 #include <base/types.h>
 #endif
 
+#include <base/exceptions.h>
 
 
 /**
@@ -133,6 +134,24 @@ protected:
                                      */
     void equ(int a, const iVector& V);
                                     //@}
+
+                                    /**
+                                     * Exception
+                                     */
+    DeclException2 (ExcInvalidIndex,
+                   int, int,
+                   << "The given index " << arg1
+                   << " should be less than " << arg2 << ".");
+                                    /**
+                                     * Exception
+                                     */
+    DeclException1 (ExcInvalidNumber,
+                   int,
+                   << "The provided number is invalid here: " << arg1);
+                                    /**
+                                     * Exception
+                                     */
+    DeclException0 (ExcOutOfMemory);
 };
 
 
@@ -151,13 +170,13 @@ inline int iVector::n() const
 
 inline int iVector::operator() (int i) const
 {
-//THROW2( (i<0) || (i>=dim), IntError(IntError::Range,i));
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
   return val[i];
 }
 
 inline int& iVector::operator() (int i)
 {
-//  THROW2( (i<0) || (i>=dim), IntError(IntError::Range,i));
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
   return val[i];
 }
 #endif
index 1c480843b62c4a86bd357cf36cec609477f1cb06..be78ab990e19665461e4bfcd125e4179b4901117 100644 (file)
@@ -1,30 +1,9 @@
 // $Id$
 
-static const char* OBJFILE = "DEAL $RCSfile$ $Revision$";
-
 #include <math.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <lac/dfmatrix.h>
-#include <base/exceptions.h>
-
-
-
-DeclException2 (ExcDimensionMismatch,
-               int, int,
-               << "The two dimensions " << arg1 << " and " << arg2
-               << "do not match here.");
-DeclException0 (ExcNotQuadratic);
-DeclException0 (ExcInternalError);
-DeclException3 (ExcInvalidDestination,
-               int, int, int,
-               << "Target region not in matrix: size in this direction="
-               << arg1 << ", size of new matrix=" << arg2
-               << ", offset=" << arg3);
-DeclException1 (ExcNotImplemented,
-               int,
-               << "This function is not implemented for the given"
-               << " matrix dimension " << arg1);
 
 
 
index ec90820a4bf7b1f21a520169040a329bbfe4d6f8..b05430401c3457414390e3183644044f7f363aa5 100644 (file)
@@ -4,8 +4,6 @@
 // DEAL is Copyright(1995) by
 // Roland Becker, Guido Kanschat, Franz-Theo Suttmeier
 
-static const char* OBJFILE = "DEAL $RCSfile$ $Revision$";
-
 #include <lac/dsmatrix.h>
 #include <ostream.h>
 
@@ -120,9 +118,9 @@ inline void quicksort(long r, T* a)
 void
 dSMatrixStruct::reinit(int m, int n, int max_per_row)
 {
-//  THROW1(m<=0, IntError(IntError::IllegalDimension, m));
-//  THROW1(n<=0, IntError(IntError::IllegalDimension, n));
-//  THROW1(max_per_row<=0, IntError(IntError::IllegalDimension, max_per_row));
+  Assert (m>0, ExcInvalidNumber(m));
+  Assert (n>0, ExcInvalidNumber(n));
+  Assert (max_per_row>0, ExcInvalidNumber(max_per_row));
   rows = m;
   cols = n;
   vec_len = m * max_per_row;
@@ -204,8 +202,9 @@ dSMatrixStruct::operator () (int i, int j)
 void
 dSMatrixStruct::add (int i, int j)
 {
-  //THROW1((i<0) || (i>=rows), IntError(IntError::Range,i));
-  //THROW1((j<0) || (j>=cols), IntError(IntError::Range,j));
+  Assert ((i>=0) && (i<rows), ExcInvalidIndex(i,rows));
+  Assert ((j>=0) && (j<cols), ExcInvalidIndex(j,cols));
+
   int k;
   for (k=rowstart[i]; k<rowstart[i+1]; k++)
     {
index 07ad2d3a0913d53e30611efe64dd795c0e823032..5a0d1986b32bc9782aba0a080601c534bc65521b 100644 (file)
@@ -4,8 +4,6 @@
 // DEAL is Copyright(1995) by
 // Roland Becker, Guido Kanschat, Franz-Theo Suttmeier
 
-static const char* OBJFILE = "DEAL $RCSfile$ $Revision$";
-
 #include <lac/dvector.h>
 #include <math.h>
 
@@ -16,14 +14,14 @@ dVector::dVector() : val(0)
 
 dVector::dVector(int n) : val(0)
 {
+  Assert (n>0, ExcInvalidNumber(n));
+
   dim = n;
   maxdim = n;
-  //THROW1(n<0, IntError(IntError::IllegalDimension, n, "dVector"));
-
   if (n)
     {
       val = new double[maxdim];
-      //THROWUNCOND(!val, Error(Error::NoMem,"dVector::dVector"));
+      Assert (val != 0, ExcOutOfMemory());
       (*this) = 0.;
     }
 }
@@ -36,19 +34,19 @@ dVector::dVector(const dVector& v) : val(0)
   if (dim)
     {
       val = new double[maxdim];
-      //THROWUNCOND(!val, Error(Error::NoMem,"dVector::dVector"));
+      Assert (val != 0, ExcOutOfMemory());
       for (int i=0;i<dim;i++) val[i] = v.val[i];
     }
 }
 
 void dVector::reinit(int n, int fast)
 {
-  //THROW1(n<=0, IntError(IntError::IllegalDimension, n));
+  Assert (n>0, ExcInvalidNumber(n));
   if (n>maxdim)
   {
     if (val) delete[] val;
     val = new double[n];
-    //THROWUNCOND(!val, Error(Error::NoMem,"dVector::reinit"));
+    Assert (val != 0, ExcOutOfMemory());
     maxdim = n;
   }
   dim = n;
@@ -62,7 +60,7 @@ void dVector::reinit(const dVector& v, int fast)
   {
     if (val) delete[] val;
     val = new double[n];
-    //THROWUNCOND(!val, Error(Error::NoMem,"dVector::reinit"));
+    Assert (val != 0, ExcOutOfMemory());
     maxdim = n;
   }
   dim = n;
@@ -172,8 +170,9 @@ dVector& dVector::operator = (const dVector& v)
 void dVector::cadd(int i, const VectorBase& V, double s, int j)
 {
   const dVector& v = (const dVector&) V;
-  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
-  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
+
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
+  Assert ((j>=0) || (j<v.dim), ExcInvalidIndex(j,v.dim));
 
   val[i] += s*v.val[j];
 }
@@ -181,9 +180,10 @@ void dVector::cadd(int i, const VectorBase& V, double s, int j)
 void dVector::cadd(int i, const VectorBase& V, double s, int j, double t, int k)
 {
   const dVector& v = (const dVector&) V;
-  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
-  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
-  //THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cadd"));
+
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
+  Assert ((j>=0) || (j<v.dim), ExcInvalidIndex(j,v.dim));
+  Assert ((k>=0) || (k<v.dim), ExcInvalidIndex(k,v.dim));
 
   val[i] += s*v.val[j] + t*v.val[k];
 }
@@ -192,26 +192,28 @@ void dVector::cadd(int i, const VectorBase& V, double s, int j,
                   double t, int k, double q, int l, double r, int m)
 {
   const dVector& v = (const dVector&) V;
-  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
-  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
-  //THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cadd"));
-  //THROW1((l<0) || (l>v.dim), IntError(IntError::Range,l,"cadd"));
-  //THROW1((m<0) || (m>v.dim), IntError(IntError::Range,m,"cadd"));
+
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
+  Assert ((j>=0) || (j<v.dim), ExcInvalidIndex(j,v.dim));
+  Assert ((k>=0) || (k<v.dim), ExcInvalidIndex(k,v.dim));
+  Assert ((l>=0) || (l<v.dim), ExcInvalidIndex(l,v.dim));
+  Assert ((m>=0) || (m<v.dim), ExcInvalidIndex(m,v.dim));
 
   val[i] += s*v.val[j] + t*v.val[k] + q*v.val[l] + r*v.val[m];
 }
 
 void dVector::czero(int i)
 {
-    //THROW1((i<0) || (i>dim), IntError(IntError::Range,i));
-    val[i] = 0.;
+  Assert ((i>=0) && (i<dim), ExcInvalidIndex(i,dim));
+  val[i] = 0.;
 }
 
 void dVector::cequ(int i, const VectorBase& V, double s, int j)
 {
   const dVector& v = (const dVector&) V;
-  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
-  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
+
+  Assert ((i>=0) && (i<dim), ExcInvalidIndex(i,dim));
+  Assert ((j>=0) && (j<v.dim), ExcInvalidIndex(j,v.dim));
 
   val[i] = s*v.val[j];
 }
@@ -219,9 +221,10 @@ void dVector::cequ(int i, const VectorBase& V, double s, int j)
 void dVector::cequ(int i, const VectorBase& V, double s, int j, double t, int k)
 {
   const dVector& v = (const dVector&) V;
-  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
-  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
-  //THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cequ"));
+
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
+  Assert ((j>=0) || (j<v.dim), ExcInvalidIndex(j,v.dim));
+  Assert ((k>=0) || (k<v.dim), ExcInvalidIndex(k,v.dim));
 
   val[i] = s*v.val[j] + t*v.val[k];
 }
@@ -230,11 +233,12 @@ void dVector::cequ(int i, const VectorBase& V, double s, int j,
                   double t, int k, double q, int l, double r, int m)
 {
   const dVector& v = (const dVector&) V;
-  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
-  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
-  //THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cequ"));
-  //THROW1((l<0) || (l>v.dim), IntError(IntError::Range,l,"cequ"));
-  //THROW1((m<0) || (m>v.dim), IntError(IntError::Range,m,"cequ"));
+
+  Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
+  Assert ((j>=0) || (j<v.dim), ExcInvalidIndex(j,v.dim));
+  Assert ((k>=0) || (k<v.dim), ExcInvalidIndex(k,v.dim));
+  Assert ((l>=0) || (l<v.dim), ExcInvalidIndex(l,v.dim));
+  Assert ((m>=0) || (m<v.dim), ExcInvalidIndex(m,v.dim));
 
   val[i] = s*v.val[j] + t*v.val[k] + q*v.val[l] + r*v.val[m];
 }
index c98acc6808725c6df53aea28fbe749d7f9d32148..967b02da39d12439f41a4512e968fa1d9fc29e67 100644 (file)
@@ -4,26 +4,26 @@
 // DEAL is Copyright(1995) by
 // Roland Becker, Guido Kanschat, Franz-Theo Suttmeier
 
-static const char* OBJFILE = "DEAL $RCSfile$ $Revision$";
-
 #include <lac/ivector.h>
 
+
+
 iVector::iVector()
 {
   dim=maxdim=1;
   val = new int[1];
-  //THROWUNCOND(!val, Error(Error::NoMem,"iVector::iVector"));
+  Assert (val != 0, ExcOutOfMemory());
   val[0] = 0;
 }
 
 iVector::iVector(int n)
 {
+  Assert (n>0, ExcInvalidNumber(n));
+
   dim = n;
   maxdim = n;
-  //THROW1(n<=0, IntError(IntError::IllegalDimension, n, "iVector::iVector"));
-
   val = new int[maxdim];
-  //THROWUNCOND(!val, Error(Error::NoMem,"iVector::iVector"));
+  Assert (val != 0, ExcOutOfMemory());
   (*this) = 0;
 }
 
@@ -36,12 +36,12 @@ iVector::iVector(const iVector& v)
 
 void iVector::reinit(int n, int fast)
 {
-  //THROW1(n<=0, IntError(IntError::IllegalDimension, n, "iVector::reinit"));
+  Assert (n>0, ExcInvalidNumber(n));
   if (n>maxdim)
   {
     delete[] val;
     val = new int[n];
-    //THROWUNCOND(!val, Error(Error::NoMem,"iVector::reinit"));
+    Assert (val != 0, ExcOutOfMemory());
     maxdim = n;
   }
   dim = n;
@@ -55,7 +55,7 @@ void iVector::reinit(const iVector& v, int fast)
   {
     delete[] val;
     val = new int[n];
-    //THROWUNCOND(!val, Error(Error::NoMem,"iVector::reinit"));
+    Assert (val != 0, ExcOutOfMemory());
     maxdim = n;
   }
   dim = n;

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.