2

我正在尝试使用 try-catch-finally 块来捕获异常。我在 catch 块中捕获了异常,并使用全局异常变量将其传递给 finally 块。这样做,我已经处理了 finally 块中的异常情况。我知道这听起来很奇怪,但有必要这样做。请让我知道是否有任何相同的编码标准问题。另外,如果您可以提出相同的建议,我将非常感激。

谢谢。

4

2 回答 2

4

catch就是捕捉异常并做任何必要的异常处理。该finally块用于清理任何剩余的打开资源,如文件句柄、数据库连接等。该块将在大部分时间运行,因此是进行清理的正确位置,但没有处理异常本身,那些应该是块内处理catch

于 2011-05-17T06:35:35.633 回答
2

如果按预期使用,try-catch-finally模式是一种非常有用且功能强大的模式。建议在 finally 块中处理异常,并且没有多大(任何?)意义。
尝试重新组织代码以适应模式,而不是相反。

小例子:

var reader = new StreamReader(path);
try
{
   // Do your work here
   reader.ReadToEnd();
}
catch (IOException ex)
{
    // Handle specific error here
    ShowUserError(ex.Message);
}
catch (Exception ex)
{
    // Handle general error here
    LogError(ex);
}
finally
{
   // Perform clean up here
   // This code will run regardless if there was an error or not
   reader.Close();
}

另外,请查看Try...Catch...Finally Statements的 MSDN 文档。

于 2011-05-17T06:42:59.027 回答