我想抓住
ORA-01013
异常出现在我的代码中,但它在捕获的异常中没有以正确的顺序出现。我们有一个
Trigger
在数据库中,每次
SERVERRROR
在我们的Oracle数据库中发生。这个
触发
是什么导致了这个问题,但我不能修改它。
例外没有任何
InnerException
,但我要捕获的异常确实出现在
Message
引发的异常。
这是抛出异常的顺序,但仅限于
ORA-04088
作为异常引发。剩下的只是抛出的异常
.Message
财产,我怀疑它被什么地方吞没了。
引发的异常
.消息
属性:
ORA-04088: error during execution of trigger 'TRIG_SERVER_ERRORS' // Don't want this
ORA-00604: error occurred at recursive SQL level 1
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 14
ORA-01013: user requested cancel of current operation // Want this
我想抓住的例外是
ORA-01013型
,但引发的异常是
ORA-04088型
.引发的异常除了
.消息
属性。
到目前为止,我已经想出了这个办法,
try
{
...
...
}
catch (OracleException ex)
{
// if(ex.Number = 01013) // This doesn't work since ex.Number is 04088
// if(ex.GetBaseException().Number) // Doesn't work also since ORA-04088 is the Base Exception
if (ex.Message.Contains("ORA-01013")) // I want to catch this
{
throw new TimeoutException("The request took too long to complete. Please add more parameters to search by, or reduce the date duration", ex);
}
else
{
throw new DataAccessException(99999, ex, "ORA-{0} exception occurred during the inline call to {1}.", ex.Number.ToString(), MethedInfo.GetCurrentMethod().Name);
}
这种方法的问题是我不得不处理
任何
OracleException
进入了接球区。我可以加一个
throw;
在我的if's结束时,或者继续将抛出的异常包装在另一个if's中,但是我宁愿只
catch
关于特定类型的异常
上面有我要的信息
.我能做什么?