1、通用异常类下面的异常被某些C#操作抛出
System.OutOfMemoryException :当试图通过new来分配内存而失败时抛出。
System.StackOverflowException :当执行栈被太多未完成的方法调用耗尽时抛出;典型情况是指非常深和很大的递归。
System.NullReferenceException :当null引用在造成引用的对象被需要的情况下使用时抛出。
System.TypeInitializationException :当一个静态构造函数抛出一个异常,并且没有任何catch语句来俘获它的时候抛出。
System.InvalidCastException :当一个从基本类型或接口到一个派生类型的转换在运行时失败时抛出。
System.ArrayTypeMismatchException :当因为存储元素的实例类型与数组的实际类型不匹配而造成象一个数组存储失败时抛出。
System.IndexOutOfRangeException :当试图通过一个比零小或者超出数组边界的标签来索引一个数组时抛出。
System.MulticastNotSupportedException :当试图合并两个非空代表失败时抛出;因为代表类型没有void返回类型。
System.ArithmeticException :一个异常的基类,它在算术操作时发生,如DivideByZeroException和OverflowException.
System.DivideByZeroException :当试图用整数类型数据除以零时抛出。
System.OverflowException :当checked中的一个算术操作溢出时抛出。
2、C#自定义异常类简介
(转: http://www.cnblogs.com/winnerlan/archive/2008/05/25/1206872.html)
C#自定义异常处理(自定义例外)
对.NET类来说,一般的异常类 System.Exception 派生于 System.Object。还有许多定义好的异常类(如:System.SystemException、System.ApplicationException等),他们又派生于 System.Exception 类。其中System.ApplicationException 类是第三方定义的异常类,如果我们要自定义异常类,那么就应派生于它。
我们要站在异常一定可能会发生的角度来编写异常处理程序,应对程序有可能发生的错误建立一个良好的异常处理策略。
在做异常处理的时候,最好能在应用程序所有的入口处(事件处理函数,主函数,线程入口)使用try-catch。 但是不要在程序构造函数入口处添加try-catch,因为此处产生异常,它自己并没有能力来处理,因为它还没有构造完毕,只能再向外层抛出异常。
但我们也不能盲目使用异常。而且使用异常,可能会在一定程度上影响到程序的性能(C#中使用异常一般不影响性能)。