黑马程序员——异常处理

来源:互联网 发布:战舰世界加贺数据 编辑:程序博客网 时间:2024/06/07 19:56

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

5.1. 异常体系

       Java.lang

              |--Object

                     |--Throwable

                            |--Error

                            |--Exception

                                   |--RunntimeException

5.2.throw和throws的区别

       Throws:自动抛出,在函数后调用,抛给调用者,可以抛出对此,最终抛出给虚拟机,由虚拟机调用printStackTrace()方法,程序停止。

       Throw:使用在函数内部,后面跟异常对象,使用时除了RunntimeException以外,要在函数上声明抛出异常。

5.3. 两种异常

       编译时异常:编译时候被检查,如果没有进行处理,编译失败,当处理异常发生位置,进行处理,跳出函数(函数后面的语句不再执行),程序继续运行。

       运行时异常:编译时候不被检查,异常发生建议让程序停止,修改代码

自定义异常:

1. 必须继承Exception、RunntimeException类(Exception体系中有一个特殊的功能,异常类和对象被抛出,这个是Throwable类中的特性,只有该类及子类才能调用                      throw和throws)

2. 继承了Exception中的所有方法super()

RunntimeExcpetion:

1. 如果在函数内部抛出了,那么函数上不用声明,编译一样通过

2. 如果在函数上声明了该类异常,调用时候,不用进行处理

3. 如果自定义异常发生,无法继续执行,那么就让他继承RunntimeException,程序终止,修改代码

RunntimeExcpetion为什么用生命异常?

       因为该类异常不需要调用者进行处理,当异常发生的时候,程序停止,因为在运行的时候发生了无法继续运算的情况,希望程序停止后,对代码进行修改。

5.4. 异常的几种格式

Try{}catch(){}

Try{}catch(){}catch(){}

Try{}catch(){}finallu{}

Try{}finally{}

Finally:定义一定会执行的代码,通常用于关闭资源。

多异常处理:

              try{}catch(){}catch(){}…..

       异常不会同时发生,一旦发生程序就会跳转到catch中进行处理,函数中,发生异常的语句下面的代码不再被执行,对方声明几个一异常,就对应几个catch块,如果多个异常存在继承关系,父类放在后面。

       子类覆盖父类的方法:

1.不抛异常

2. 抛父类的异常

3. 抛父类异常的子类

4. 如果子类产生其他异常,用catch

5. 如果父类抛出多个异常,子类抛出父类异常的子集

6. 如果父类方法没有异常,方法覆盖时,子类不可抛异常,如果有异常出现,用catch

5.5. 附加问题

       1.finally什么情况会读不到?

              在System.exit(0)的时候,程序退出,不读finally

       2.异常的好处?

              将问题封装,将程序代码和异常代码分离,方便阅读

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
0 0