我正在研究异常处理应用程序块,我从Microsoft页面读了一段:When Should I Use the Exception Handling Application Block?
原始内容:
异常处理应用程序块的限制
异常处理应用程序块是对异常的补充 处理恢复代码;它不是它的替代品。如果例外 由于真正不寻常的情况发生,它是不可能的 一个应用程序,以优雅的方式恢复并完成它的工作单元 已经开始。但是,有时可以恢复。一个例子 是因为文件被锁定而发生的异常。恢复 代码可能会指示应用程序在等待后重试该文件 一段时间。
在这种情况下,应该实现异常处理恢复代码 在应用程序代码中;它不应该作为处理程序实现 由异常处理应用程序块使用。这是因为它 需要访问局部变量,参数和其他上下文 数据。此数据超出范围,运行的处理程序无法访问 异常处理应用程序块。
“异常处理恢复代码”是什么意思?
一个例子也很有用。
答案 0 :(得分:1)
异常处理恢复代码将是catch
代码块中的内容。它可以记录错误,查找友好消息以显示给用户,或重试某些过程等。
根据你问题中引用的文字:
示例是因为文件被锁定而发生的异常。恢复代码可能会指示应用程序在等待一段时间后重试该文件
请参阅MSDN:Exceptions and Exception Handling。
class ExceptionTest
{
static double SafeDivision(double x, double y)
{
if (y == 0)
throw new System.DivideByZeroException();
return x / y;
}
static void Main()
{
// Input for test purposes. Change the values to see
// exception handling behavior.
double a = 98, b = 0;
double result = 0;
try
{
result = SafeDivision(a, b);
Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Attempted divide by zero.");
}
}
}
为什么你应该尽快处理异常的一个例子,而不是在异常处理应用程序块中,正如它所说,可能是你需要访问局部变量的地方。例如。您尝试打开文件,但收到错误。让用户知道您无法打开哪个文件可能会很不错。为此,您需要访问打开文件的方法中的变量。如果你想重试打开文件,你也必须这样做。