查看 try-catch 挑战的解决方案

已完成

以下代码是上一单元挑战的一种可能解决方案:

try
{
    Process1();
}
catch
{
    Console.WriteLine("An exception has occurred");
}

Console.WriteLine("Exit program");

static void Process1()
{
    try
    {
        WriteMessage();
    }
    catch
    {
        Console.WriteLine("Exception caught in Process1");
    }

}

static void WriteMessage()
{
    double float1 = 3000.0;
    double float2 = 0.0;
    int number1 = 3000;
    int number2 = 0;

    Console.WriteLine(float1 / float2);
    Console.WriteLine(number1 / number2);
}

在此解决方案中,方法 `Process1` 已更新为使用 `try-catch` 模式。 在 try 代码块中调用 WriteMessage 方法,从而使 Process1 能够在顶级语句中的 catch 子句捕获异常之前捕获异常。

运行此应用程序将生成所需的输出:

∞
Exception caught in Process1
Exit program

请注意,由于异常是在 Process1 内部被捕获的,因此顶级语句中的 catch 代码块不会被执行。 当捕获特定异常类型时,捕获调用堆栈中不同级别的异常所带来的好处变得更加明显。 你将在下一个单元中检查异常类型。

如果你成功迎接这一挑战,恭喜! 继续下一个单元。

重要

如果在完成此挑战时遇到问题,也许你应该先查看以前的单元,然后再继续作。