解析Exception和C#处理Exception的常用方法总结

时间:2022-04-23 01:33:06

在.NET中,异常是指成员没有完成它的名称宣称可以完成的行动。在异常的机制中,异常和某件事情的发生频率无关。

异常处理四要素包括:一个表示异常详细信息的类类型;一个向调用者引发异常类实例的成员;调用者的一段调用异常成员的代码块;调用者的一段处理将要发生异常的代码块。异常类类型包括:基类:System.Exception;系统级异常:System.SystemException;应用程序级异常:System.ApplicationException。

(一).在.NET中有如下的异常类:

(1).由System.SystemException派生的异常类型:

System.AccessViolationException   在试图读写受保护内存时引发的异常。  
System.ArgumentException   在向方法提供的其中一个参数无效时引发的异常。  
System.Collections.Generic.KeyNotFoundException   指定用于访问集合中元素的键与集合中的任何键都不匹配时所引发的异常。  
System.IndexOutOfRangeException   访问数组时,因元素索引超出数组边界而引发的异常。  
System.InvalidCastException   因无效类型转换或显示转换引发的异常。  
System.InvalidOperationException   当方法调用对于对象的当前状态无效时引发的异常。  
System.InvalidProgramException   当程序包含无效Microsoft中间语言(MSIL)或元数据时引发的异常,这通常表示生成程序的编译器中有bug。  
System.IO.IOException   发生I/O错误时引发的异常。  
System.NotImplementedException   在无法实现请求的方法或操作时引发的异常。  
System.NullReferenceException   尝试对空对象引用进行操作时引发的异常。  
System.OutOfMemoryException   没有足够的内存继续执行程序时引发的异常。  
System.*Exception   挂起的方法调用过多而导致执行堆栈溢出时引发的异常。  

(2).由System.ArgumentException派生的异常类型:

System.ArgumentNullException   当将空引用传递给不接受它作为有效参数的方法时引发的异常。  
System.ArgumentOutOfRangeException   当参数值超出调用的方法所定义的允许取值范围时引发的异常。  

(3).由System.ArithmeticException派生的异常类型:

System.DivideByZeroException   试图用零除整数值或十进制数值时引发的异常。  
System.NotFiniteNumberException   当浮点值为正无穷大、负无穷大或非数字(NaN)时引发的异常。  
System.OverflowException   在选中的上下文中所进行的算数运算、类型转换或转换操作导致溢出时引发的异常。  

(4).由System.IOException派生的异常类型:

System.IO.DirectoryNotFoundException   当找不到文件或目录的一部分时所引发的异常。  
System.IO.DriveNotFoundException   当尝试访问的驱动器或共享不可用时引发的异常。  
System.IO.EndOfStreamException   读操作试图超出流的末尾时引发的异常。  
System.IO.FileLoadException   当找到托管程序却不能加载它时引发的异常。  
System.IO.FileNotFoundException   试图访问磁盘上不存在的文件失败时引发的异常。  
System.IO.PathTooLongException   当路径名或文件名超过系统定义的最大长度时引发的异常。  

(5).其他常用异常类型:     

ArrayTypeMismatchException   试图在数组中存储错误类型的对象。  
BadImageFormatException   图形的格式错误。  
DivideByZeroException   除零异常。  
DllNotFoundException   找不到引用的dll。  
FormatException   参数格式错误。  
MethodAccessException   试图访问私有或者受保护的方法。  
MissingMemberException   访问一个无效版本的dll。  
NotSupportedException   调用的方法在类中没有实现。  
PlatformNotSupportedException   平台不支持某个特定属性时抛出该错误。  

(二)..NET的异常处理方式: