2

我希望调用函数的代码来处理函数中引发的任何异常。如果我写:

            try
            {
                // Code than may raise an exception
            }
            catch
            {
                throw;
            }

异常将通过调用堆栈传回。我可以改写以下内容并获得相同的结果吗?在这种情况下有什么理由使用try catch

             // Code that may raise an exception
4

2 回答 2

4

在您介绍的场景中,捕获然后重新抛出异常的唯一原因是您是否在 catch 块中执行其他操作,例如日志记录或清理。否则,它完全是一个空操作。

顺便说一句,如果您确实需要此构造,那么您使用的是throw,而不是,这对您很好。throw e前者保留调用堆栈;后者没有。

于 2013-08-31T23:41:38.760 回答
1

在这种情况下没有理由使用try/catch

如果您正在记录任何信息或将异常封装在更高级别的信息中,try/catch则会指示。

于 2013-08-31T23:41:46.493 回答