TRY CATCH THROWS异常没有记录

时间:2014-07-02 12:23:57

标签: asp.net vb.net exception-handling

我正在查看别人的代码,并且有很多这样的代码:

try
   'Logic here
catch e as exception
throw
end try

我认为TRY和CATCH原因毫无意义(它们可能用于调试)。有没有像这样的编码是好​​的做法?

有一个全局偶数处理程序(global.asa)。

4 个答案:

答案 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块更好。