我试图使用try-catch-finally块捕获异常。我在catch块中捕获了异常,并使用全局异常变量将其传递给finally块。这样做,我已经处理了finally块中的异常情况。我知道这听起来很奇怪,但有必要这样做。如果有相同的编码标准问题,请告诉我。此外,如果你可以提出相同的建议,我将非常感激。
感谢。
答案 0 :(得分:4)
catch
用于捕获异常并执行任何必要的异常处理。 finally
块用于清理任何左侧打开的资源,如文件句柄,数据库连接等。此块大部分时间运行,因此是正确的清理位置但是没有处理例外本身,那些应该在catch
块中处理。
答案 1 :(得分: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文档。