1,异常处理模式
除IOException和派生于IOException的类外,其余的类都在System命名空间.
2,捕获异常
finally块清理资源或执行要在try块末尾执行的其它操作.无论是否产生异常finally块都会被执行.在其中不可以放置return语句,编译器会报错.try和catch块执行完以后都会执行finally块.
其结构可以是
try
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
throw new IndexOutOfRangeException("You typed in " + userInput);
}
catch
(IndexOutOfRangeException e)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
}
catch
(Exception e)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
}
catch
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
}
finally
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
}
传递给catch块的参数只能用于这个catch块.可以使用相同的参数名e.在抛出异常的时候最好不要把Exception类的实例当作一个异常,因为它没有包含错误的任何信息.
可以参照程序运行出现异常时的情况来捕获异常.
在编写异常捕获的时候,顺序很重要,要依着从子类到基类的顺序来进行.没有参数的catch块用来捕获不是用C#编写的代码抛出的异常.
另外异常也可能在catch块抛出.在不同的地方处理不同的异常可以使不严重的异常不影响程序的运行.
![](https://i-blog.csdnimg.cn/blog_migrate/35dd1f9b2e7901daf6f506813ff89605.jpeg)
除IOException和派生于IOException的类外,其余的类都在System命名空间.
2,捕获异常
finally块清理资源或执行要在try块末尾执行的其它操作.无论是否产生异常finally块都会被执行.在其中不可以放置return语句,编译器会报错.try和catch块执行完以后都会执行finally块.
其结构可以是
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
throw new IndexOutOfRangeException("You typed in " + userInput);
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
在编写异常捕获的时候,顺序很重要,要依着从子类到基类的顺序来进行.没有参数的catch块用来捕获不是用C#编写的代码抛出的异常.
另外异常也可能在catch块抛出.在不同的地方处理不同的异常可以使不严重的异常不影响程序的运行.