我正在查看别人的代码,并且有很多这样的代码:
try
'Logic here
catch e as exception
throw
end try
我认为TRY和CATCH原因毫无意义(它们可能用于调试)。有没有像这样的编码是好的做法?
有一个全局偶数处理程序(global.asa)。
答案 0 :(得分:3)
我同意这些条款毫无意义,更糟糕的是,为代码添加混乱,除了混淆之外什么都不会增加。
更糟糕的是:如果他们做Throw e
而不只是Throw
,原始异常的堆栈就会丢失。
答案 1 :(得分:2)
没有。没有理由有一个只会抛出的try ..catch。如果要在发生异常时调试和捕获异常,则应在Visual Studio中停止框架异常(调试菜单 - >异常...)。
答案 2 :(得分:1)
我在其中一个继承的程序中有完全相同的东西,它实际上更糟因为在C#中捕获是昂贵的(只有尝试是免费的)。我每天都要删除十几个,我应该在几周内完成。
答案 3 :(得分:-1)
通常,您不希望这样做(并且您也不想捕获System.Exception
。)
话虽如此,在某些情况下,您可能需要Throw
调用堆栈中的异常,以及Catch
其他地方的异常。这是一个简单的例子:
Try
' Do some stuff here. For this example, let's assume
' it cannot cause any exceptions
Try
' Do some other stuff here that CAN cause an exception
Catch innerEx as Exception
' Rethrowing so that the outer block handles this
Throw
End Try
Catch ex as Exception
MessageBox.Show("I just caught an exception.")
End Try
如果你做这样的事情,常识要求你应该发表评论说明你为什么这样做。
正如我所说,这是一个非常简单的例子,但更常见的用法可能是你有一个调用另一个方法的方法,并且你希望第一个方法处理第二个方法可能抛出的任何异常。如果您将Try/Catch
块从第二种方法中移除而不是重新抛出,行为将是相同的,但Try/Catch
和注释会使您的意图更加明显。
编辑:如果你知道哪一行代码可能抛出异常,那么在该行上面添加注释可能比添加Try/Catch
块更好。