为什么抛出异常而不是让代码抛出它
本文关键字:代码 抛出异常 为什么 | 更新日期: 2023-09-27 18:29:50
我希望调用函数的代码能够处理函数中引发的任何异常。如果我写:
try
{
// Code than may raise an exception
}
catch
{
throw;
}
异常将与调用堆栈一起返回。我可以写下面的内容,得到同样的结果吗?在这种情况下,有理由使用try catch
吗?
// Code that may raise an exception
在您介绍的场景中,捕获并重新抛出异常的唯一原因是,如果您正在捕获块中执行其他操作,如日志记录或清理。否则,这完全是一个禁忌。
顺便说一句,如果你确实需要这个构造,那么你使用throw
而不是throw e
,这对你来说很好。前者保留了调用堆栈;后者没有。
在这种情况下没有理由使用try/catch
。
如果您记录任何信息或将异常封装在更高级别的信息中,则会显示try/catch
。