在C#中,所有的异常都是从System.Exception类派生的。类System.Exception是所有异常的基类。该类有些值得注意的属性,这些属性是所有异常都具有的:
1、只读属性Message:该属性可以包含个可以被读取的异常信息的描述。它指出是什么错误造成了异常。处理异常时,可以将这个信息记录到个日志文件,或者向用户输出条有意义的信息,并要求他们重试遍。
2、只读属性InnerException:该属性包含当前异常的“内部异常”。如果不是null,就指出当前的异常是作为对另个异常的回答而被抛出。产生当前异常的异常可以在InnerException属性中得到。
3、try——包含产生异常的代码。
4、catch——包含产生异常时要执行的代码。catch块可以使用<exceptionType>,设置为只响应特定的异常类型(如System.IndexOutOfRangeException),以便提供多个catch块。还可以完全省略这个参数,让般的catch块响应所有的异常。
5、finally——包含总是会执行的代码,如果没有产生异常,则在try块之后执行,如果产生了异常,就在catch块后执行,或者在未处理的异常中断应用程序之前执行。
6、try块在发生异常的地方中断程序的执行。
7、如果有catch块,就检查该块是否匹配己发生的异常类型。如果没有catch块,就执行finally块(如果没有catch块,就定要有finally块)。
8、如果有catch块,但它与已发生的异常类型不匹配,就检查是否有其他catch块。
9、如果有catch块匹配己发生的异常类型,就执行它包含的代码,然后执行finally块(如果有)。
10、如果所有的catch块都不匹配已发生的异常类型,就执行finally块(如果有)。try语句提供了—种在块语句执行过程中捕获异常的机制。
11、跟有个或多个catch块语句的try块语句。
12、跟有个finally块语句的try块语句。
13、跟有个或多个catch块语句和个finally语句的try块语句。