C#学习记录(17)错误处理

        一.try ... catch ... finally

        try

        {

            ......

            包含抛出异常的代码
        }
        catch (<exceptionType> e)
        {

            ...

            包含抛出异常时要执行的代码

        }
        finally
        {

            ...

            包含总是会执行的代码

        }

        

        在try 块的代码中出现异常后,发生的事件依次是:
         try 块在发生异常的地方中断程序的执行。
         如果有catch 块,就检查该块是否匹配已抛出的异常类型。如果没有catch 块,就执行finally
            块(如果没有catch 块,就一定要有finally 块)。
         如果有catch 块,但它与已发生的异常类型不匹配,就检查是否有其他catch 块。

         如果有catch 块匹配已发生的异常类型,就执行它包含的代码,再执行finally 块(如果有)。

         如果 catch 块都不匹配已发生的异常类型,就执行finally 块(如果有)。


        2.throw

        Throw会抛出/传递异常,通过在catch块里使用throw语句.可以改变产生的异常,比如我们可以抛出一个新的异常,throw语句有各种各样的,并且很有必要。可以是重复抛出,也可以是显示信息,或者产生新的异常。

           throw会主动将程序停止,并提示程序员错误内容。

using System;
class Program
{
    static void Main()
    {
        try
        {
            A();
            B();
            C(null);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }

    static void A()
    {
    // Rethrow 语法.
        try
        {
            int value = 1 / int.Parse("0");
        }
        catch
        {
            throw;    //抛出刚才已经发生过的异常
        }
    }

    static void B()
    {
        // 过滤异常类型.
        try
        {
            int value = 1 / int.Parse("0");
        }
        catch (DivideByZeroException ex)
        {
            throw ex;
        }
    }

    static void C(string value)
    {
        // 创建新的异常.
        if (value == null)
        {
            throw new ArgumentNullException("value");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/shenseyoulan/article/details/80826853