Author: gbayon
Date: Tue Jul 26 10:05:02 2005
New Revision: 225347

URL: http://svn.apache.org/viewcvs?rev=225347&view=rev
Log:
- Improved error throwing

Modified:
    ibatis/trunk/cs/mapper/IBatisNet.DataAccess/Configuration/DaoProxy.cs

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataAccess/Configuration/DaoProxy.cs
URL: 
http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataAccess/Configuration/DaoProxy.cs?rev=225347&r1=225346&r2=225347&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataAccess/Configuration/DaoProxy.cs 
(original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataAccess/Configuration/DaoProxy.cs Tue 
Jul 26 10:05:02 2005
@@ -109,11 +109,10 @@
                                try 
                                {
                                        result = invocation.Method.Invoke( 
_daoImplementation.DaoInstance, arguments);
-                                               
//method.invoke(daoImpl.getDaoInstance(), args);
                                } 
                                catch (Exception e) 
                                {
-                                       throw new DataAccessException("Unable 
to intercept method name "+invocation.Method.Name, e);
+                                       throw UnWrapException(e, 
invocation.Method.Name);
                                }
                        } 
                        else 
@@ -127,14 +126,7 @@
                                        } 
                                        catch (Exception e) 
                                        {
-                                               if (e is DataAccessException)
-                                               {
-                                                       throw;
-                                               }
-                                               else
-                                               {
-                                                       throw new 
DataAccessException("Unable to intercept method name "+invocation.Method.Name, 
e);
-                                               }
+                                               throw UnWrapException(e, 
invocation.Method.Name);
                                        }
                                } 
                                else 
@@ -153,14 +145,7 @@
                                        } 
                                        catch (Exception e) 
                                        {
-                                               if (e is DataAccessException)
-                                               {
-                                                       throw;
-                                               }
-                                               else
-                                               {
-                                                       throw new 
DataAccessException("Unable to intercept method name "+invocation.Method.Name, 
e);
-                                               }
+                                               throw UnWrapException(e, 
invocation.Method.Name);
                                        } 
                                        finally 
                                        {
@@ -179,6 +164,28 @@
                        return result;
                }
 
+               private Exception UnWrapException(Exception ex, string 
methodName) 
+               {
+                       Exception e = ex;
+                       while (true) 
+                       {
+                               if 
(typeof(DataAccessException).IsInstanceOfType(e))
+                               {
+                                       return e;
+                               }
+                               else if (e.InnerException != null)
+                               {
+                                       e = e.InnerException;
+                               }
+                               else
+                               {
+                                       e = new DataAccessException( 
string.Format("DaoProxy : unable to intercept method name '{0}', cause : {1}", 
methodName, e.Message), e);
+                               }                       
+                       }
+               }
+
                #endregion
+
+
        }
 }


Reply via email to