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

时间:2013-08-31 23:40:00

标签: c# exception

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

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

异常将与callstack一起传回。我可以写下以下内容并获得相同的结果吗?在这种情况下是否有理由使用try catch

             // Code that may raise an exception

2 个答案:

答案 0 :(得分:4)

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

顺便说一句,如果您确实需要此构造,那么您使用的是throw,而不是throw e。前者保留了callstack;后者没有。

答案 1 :(得分:1)

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

如果您记录任何信息或将例外封装在更高级别的信息中,则会显示try/catch