为什么抛出异常而不是让代码抛出它

本文关键字:代码 抛出异常 为什么 | 更新日期: 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