finally块和catch块之后的代码清理之间的区别(C#)

时间:2016-08-23 06:41:34

标签: asp.net try-catch code-cleanup

在catch块中添加清除代码和在catch块之后添加清理代码之间有什么区别?

     try
     {
      //some code
     }
     catch
     {
     }
     finally
     {
      //cleanup
     }

     try
     {
      //some code
     }
     catch
     {
     }
      //cleanup

2 个答案:

答案 0 :(得分:0)

如果从try .. catch块中抛出未被此catch捕获的抛出,则finally子句内的清理代码将执行,代码紧跟{{1}之后的代码阻止不会。

答案 1 :(得分:0)

在第二种情况下,如果代码重新抛出异常或从catch块返回,则不会调用result代码。在cleanup块的情况下,即使你有一个异常或来自catch块的return语句,它也会被执行。

MSDN说:

  

通过使用finally块,您可以清理所有资源   在try块中分配,即使异常也可以运行代码   发生在try块中。通常,finally块的语句   当控件离开try语句时运行。控制权的转移可以   由于正常执行,执行休息,   继续,转到或返回语句,或传播异常   在try语句之外。