我正在研究异常处理应用程序块,我从Microsoft页面上读了一段:何时使用异常处理应用程序块?。
原始内容:
异常处理应用程序块的限制 异常处理应用程序块是对异常处理恢复代码的补充;它不是它的替代品。如果异常是由于真正不寻常的情况而发生的,那么应用程序就不可能优雅地恢复并完成它已经启动的工作单元。然而,有时是可以恢复的。一个示例是由于文件被锁定而发生的异常。恢复代码可能会指示应用程序在等待了一段时间后重新尝试该文件。 在这种情况下,异常处理恢复代码应该在应用程序代码中实现;它不应该实现为异常处理应用程序块使用的处理程序。这是因为它需要访问局部变量、参数和其他上下文数据。此数据超出范围,异常处理应用程序块运行的处理程序无法访问该数据。
“异常处理恢复代码”是什么意思?
举一个例子也是有用的。
发布于 2011-12-15 08:14:53
异常处理恢复代码将是catch
代码块中的内容。它可以记录错误,查找友好的消息以显示给用户,或者重试一些进程等等。
从你问题中引述的案文看:
一个示例是由于文件被锁定而发生的异常。恢复代码可能会指示应用程序在等待了一段时间后重试该文件。
请参阅MSDN:异常和异常处理。
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.");
}
}
}
您应该尽快处理异常,而不是像它所说的那样在异常处理应用程序块中处理异常的一个例子可能是您需要访问局部变量的地方。你试着打开一个文件,但得到一个错误。最好让用户知道您无法打开哪个文件。为此,您需要访问打开文件的方法中的变量。如果您想重新尝试打开文件,您也必须在那里这样做。
https://stackoverflow.com/questions/8516929
复制相似问题