黑马程序员技术交流社区
标题:
异常
[打印本页]
作者:
纤路
时间:
2016-1-24 23:27
标题:
异常
异常:就是程序在运行时出现不正常的情况
异常的由来:问题也是现实生活中一个具体的事物,也是可以通过java形式进行描述.并封装成对象,其实就是java对不正常情况进行描述后的对象体现.
异常的处理:java提供了特有的语句进行处理
try{
需要被检测的代码
}
catch(异常处理变量){ 例如:catch(Exception e)
处理异常的代码:处理方式
}
finally{
一定会执行的语句;
}
3.对捕获到的异常对象进行常见方法操作
String getMessage();获取异常的信息
String toString():现实异常名称,异常信息
void printStackTrace() :现实异常的名称,异常的信息,异常出现的位置
其实jvm默认的异常处理机制就是在调用printStackTrace
在函数上声明异常:便于提高安全性,让调用进行处理,不处理会编译失败
多异常的处理:
1.声明异常时,建议声明更为具体的异常,这样处理的可以更具体比如:throws Exception 改成 throws ArithemeticException
2.对方对方声明几个异常就对应几个catch 块,如果多个块中的异常出现继承关系,父类catch放在catch块的最下面,不要定义多余的catch
3,建立在进行catch处理时,catch中一定定义具体的处理方式不要简单定义一句e.Exception 或简单一条输出语句
生活中会出现特有的问题,这些问题并未被java所描述并封装对象.所以对这些问题可以按照java对问题封装的思想,将问题进行自定义异常封装
当在函数内部出现了throw抛出异常对象时,那么久必须要给出对应的处理动作.要么在内部try catch 处理要么在函数上声明让调用者处理
一般情况下,函数内部出现异常,函数上需要声明
自定义异常:必须是自定义类继承Exception或者throwable
继承exception的原因:异常体系有一个特点:因为异常类和异常对象都被抛出.他们都具有可抛性.这个可抛性是throwabe这个体系中独有特点.只有这个体系中的类和对象才可以被throw和throws所操作
throw 和throws的区别:
throw使用在函数内,后跟的是异常对象
throws使用在函数上,后跟的是异常类,可以多个,用逗号隔开
(面试中会涉及)
Exception中有个特殊的异常RuntimeExceoption运行异常:
如果在函数内抛出该异常,函数上可以不用 声明,编译一样通过
如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过
之所以不用再函数上声明,是因为不需要让调用者处理.当这些异常发生时,因为在运行时,出现了无法继续运算的情况 ,希望程序停止后,对代码进行修改
自定义异常时,如果该异常发生时,无法再继续进行运算,就让自定义异常继承runtimeException
对于异常分两类:
1. 编译时被检测的异常
2. 编译时不被检测的异常(运行时异常,runtimeException以及其子类)
finally代码块:定义一定执行的代码
catch 是用于处理异常,如果没有catch就代表异常没被处理过.如果该异常是检测时异常,那么必须声明
异常在子父类中覆盖的体现:
1,子类在覆盖父类时,如果父类的方法抛出异常,那么子类在覆盖方法,只能抛出父类的异常或者该类异常的子类
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集
3,如果父类或接口的方法中没有异常抛出,就必须要进行try处理,绝对不能抛出.
异常的总结:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2