黑马程序员技术交流社区
标题:
Try catch对接收的异常有限制吗?
[打印本页]
作者:
殘遛の丶狳味
时间:
2013-8-16 22:18
标题:
Try catch对接收的异常有限制吗?
Try catch是不是任何异常都能处理啊?
作者:
杨敏Yummy
时间:
2013-8-16 23:47
异常有两种:一种是执行程序中产生的异常,另外一种是公共语言运行库(CLR)中生成的异常。
在C#中,基类库定义了多个类,每个类代表一个指定的异常类型。发生异常时,CLR会创建该类型的异常对象 and 寻找适当的catch语句处理异常。还有就是,所有的异常类都是派生自System.Exception这个类。
当使用catch语句来处理异常时,通常有三种形式:
(1)catch
{异常处理代码} //一般的catch子句,可接收任何异常,但不能确定发生的异常类型。
(2)catch (ExceptionType)
{异常处理代码} //特定的catch子句,将一个异常类的名称如IndexOutOfRangeException(错误地对数组索引)作为参数,使用时只能匹配与其相同类型的异常
(3)catch (ExceptionType ex)
{异常处理代码} //带特定对象的catch子句,能提供最多关于异常的信息。它首先匹配该指定类的异常,或派生自它异常类的异常,并且给出一个异常实例的异常变量ex,通过ex的属性可以查看更多关于异常的信息。
在异常发生之后,系统会按顺序查找catch子句的列表,首先匹配到该异常对象类型的catch子句被执行。
如果异常没有在try块中产生,或者try块中没有匹配的异常处理程序,那么异常沿着栈向上传递,在这个过程中系统会再去匹配有没有异常处理的代码处理块。如果很不幸的是还没有找到,应用程序就会say oops,跳出!
所以catch块并不能hold住所有的异常,只要是Exception类或者是继承自它的异常类都是可以收住的,其他的那些个unknown的异常,实在不敢接!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2