我正在尝试使用 try-catch-finally 块来捕获异常。我在 catch 块中捕获了异常,并使用全局异常变量将其传递给 finally 块。这样做,我已经处理了 finally 块中的异常情况。我知道这听起来很奇怪,但有必要这样做。请让我知道是否有任何相同的编码标准问题。另外,如果您可以提出相同的建议,我将非常感激。
谢谢。
我正在尝试使用 try-catch-finally 块来捕获异常。我在 catch 块中捕获了异常,并使用全局异常变量将其传递给 finally 块。这样做,我已经处理了 finally 块中的异常情况。我知道这听起来很奇怪,但有必要这样做。请让我知道是否有任何相同的编码标准问题。另外,如果您可以提出相同的建议,我将非常感激。
谢谢。
catch
就是捕捉异常并做任何必要的异常处理。该finally
块用于清理任何剩余的打开资源,如文件句柄、数据库连接等。该块将在大部分时间运行,因此是进行清理的正确位置,但没有处理异常本身,那些应该是块内处理catch
。
如果按预期使用,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 文档。