“异常处理恢复代码”的含义是什么

时间:2011-12-15 08:09:11

标签: c# .net enterprise-library

我正在研究异常处理应用程序块,我从Microsoft页面读了一段:When Should I Use the Exception Handling Application Block?

原始内容:

  

异常处理应用程序块的限制

     

异常处理应用程序块是对异常的补充   处理恢复代码;它不是它的替代品。如果例外   由于真正不寻常的情况发生,它是不可能的   一个应用程序,以优雅的方式恢复并完成它的工作单元   已经开始。但是,有时可以恢复。一个例子   是因为文件被锁定而发生的异常。恢复   代码可能会指示应用程序在等待后重试该文件   一段时间。

     

在这种情况下,应该实现异常处理恢复代码   在应用程序代码中;它不应该作为处理程序实现   由异常处理应用程序块使用。这是因为它   需要访问局部变量,参数和其他上下文   数据。此数据超出范围,运行的处理程序无法访问   异常处理应用程序块。

“异常处理恢复代码”是什么意思?
一个例子也很有用。

1 个答案:

答案 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.");
        }
    }
}

为什么你应该尽快处理异常的一个例子,而不是在异常处理应用程序块中,正如它所说,可能是你需要访问局部变量的地方。例如。您尝试打开文件,但收到错误。让用户知道您无法打开哪个文件可能会很不错。为此,您需要访问打开文件的方法中的变量。如果你想重试打开文件,你也必须这样做。

相关问题