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
+
+
}
}
