Bootstrap

C#中的异常捕获 try catch finally

处理异常提供的四个关键字,try...catch...finally...throw
finally 最后,不管异常是否被抛出都会执行,例如 打开一个文件,不管是否出现异常都需要关闭,
throw: 当问题出现的时候 程序可以抛出一个异常,使用throw关键字抛出异常,

try{执行的代码}

catch(ExceptionName e1){处理异常 throw 抛出异常}
catch(ExceptionName e1){处理异常 throw 抛出异常}
finally{执行的代码}

 Test t1 = new Test();
 try
 {
     Console.WriteLine("1");
     t1.Age = 250;
     Console.WriteLine("2");
 }

 Exception 可以捕获所有的错误类型,如果写的不同类型的错误的时候只能捕获对应类型的错误,例如

FormatException(格式错误) ObjectDisposedException(超出有效范围) IndexOutOfRangeException(数组越界) DataMisalignedException(除数为0); 所以一般把Exception 捕获所有错误类型catch 写到最后

catch (Exception e)
{
    Console.WriteLine(e.Message);
    Console.WriteLine("3");
    // throw e; 抛出错误 立马停掉
    // 解决异常 一般不要直接在catch 直接throw
    // 2.一般在catch 复制一个合法的值
    t1.Age = 20;
}
finally
{
    Console.WriteLine("4");
}
Console.WriteLine(t1.Age);

 Test类

class Test
{
    private int age = 10;
    public int Age
    {
        set
        {
            if (value>0 &&value < 150)
            {
                age = value;
            }
            else
            {
                // 如果超过150 处理抛出一个异常
                // IndexOutOfRangeException 索引超出范围的异常
                throw new IndexOutOfRangeException("age must less 150");
            }
        }
        get
        {
            return age;
        }
    }
}

;