在try catch中抛出自定义异常
本文关键字:自定义异常 try catch | 更新日期: 2023-09-27 17:50:43
如果我在一个大的try catch中有一些代码,最终捕获了OracleException
和一般的Exception
,那么我不能在try catch中抛出任何自定义异常,因为它被一般的Exception
捕获。
在这种情况下我应该怎么做?
感谢try
{
// some code
if(a==b)
{
throw new MyCustomException(ex);
}
}
catch(OracleException ex)
{
...
}
catch(Exception ex)
{
...
}
你的意思是你想要抛出一个自定义异常,不是被捕获的Exception
块?
如果是这种情况,那么试试:
try
{
throw new MyCustomException();
}
catch (OracleException ex)
{
// Handle me...
}
catch (MyCustomException)
{
// Important: NOT `throw ex` (to preserve the stack trace)
throw;
}
catch (Exception ex)
{
// Handle me...
}
任何MyCustomException
类型的异常都将被第二个catch
捕获(而不是第三个catch
),然后被重新抛出。
注意,执行catch (Exception)
通常是不好的做法——这是一个很好的例子。我绝对建议您不要执行上述操作,而是简单地进行重构,使您不再捕获Exception
,这将是一个更简洁的解决方案。
check this:
try
{
...
}
catch()
{
throw new Execption("I'M A NEW EXCEPTION")
}
finally
{
...
}
您不能简单地添加一个catch
子句与您的自定义异常?
try
{
//Lots of code
}
catch (OracleException)
{
}
catch (MyCustomException)
{
}
catch (Exception)
{
}
试试这个
catch(OracleException ex)
{
throw new MyCustomException(
"MyCustomEX error: Unable to ......", ex);
}