Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么要抛出异常而不是让代码抛出它?_C#_Exception - Fatal编程技术网

C# 为什么要抛出异常而不是让代码抛出它?

C# 为什么要抛出异常而不是让代码抛出它?,c#,exception,C#,Exception,我希望调用函数的代码能够处理函数中引发的任何异常。如果我写: try { // Code than may raise an exception } catch { throw; } 异常将与调用堆栈一起传回。我可以改为写下面的内容并得到相同的结果吗?在这种情况下,是否有任何理由使用try

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

            try
            {
                // Code than may raise an exception
            }
            catch
            {
                throw;
            }
异常将与调用堆栈一起传回。我可以改为写下面的内容并得到相同的结果吗?在这种情况下,是否有任何理由使用
try catch

             // Code that may raise an exception

在您介绍的场景中,捕获然后重试异常的唯一原因是您正在捕获块中执行其他操作,如日志记录或清理。否则,这完全是禁止的


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

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

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