C# Exception整理...
1, 整体模式
PS:以上所有异常都在system命名空间里,除了IOException及其派生Excpetion在system.IO内
从图中可以看出异常主要分为2类,SystemException和ApplictaionException
SystemException:通常有.Net运行库生成
ApplictaionException:是用户定义异常的基类,可用于定义应用程序一些独有的异常
2, SystemException
大部分都可以由其名字猜出作用
StackOverflowException:这样的异常往往发生在递归以及死循环,造成分配给堆栈的内存区域已满,这种情况下甚至不会执行finally区域。
OverflowException:比如checked环境下要把-40的int转换为uint数据, 其基类即为计算异常基类。
其他的看单词基本就能猜到了
3,ApplicationException
PS:以上所有异常都在system命名空间里,除了IOException及其派生Excpetion在system.IO内
从图中可以看出异常主要分为2类,SystemException和ApplictaionException
SystemException:通常有.Net运行库生成
ApplictaionException:是用户定义异常的基类,可用于定义应用程序一些独有的异常
2, SystemException
大部分都可以由其名字猜出作用
StackOverflowException:这样的异常往往发生在递归以及死循环,造成分配给堆栈的内存区域已满,这种情况下甚至不会执行finally区域。
OverflowException:比如checked环境下要把-40的int转换为uint数据, 其基类即为计算异常基类。
其他的看单词基本就能猜到了
3,ApplicationException
public class PageCannotFindException : ApplicationException { public PageCannotFindException(string pageName) : base("Cannot find page: " + pageName) { } public PageCannotFindException(string pageName, Exception innerException) : base("Cannot find page: " + pageName, innerException) { } } 上面是一个简单的用户异常类
而是用的时候也是基本跟预定义的一样
捕获:
try { ... } Catch(PageCannotFindException ex) { ... }
抛出:
Catch(Exception ex) { throw new PageCannotFindException(pageName, ex); }