您的位置:首页 > 其它

异常

2015-06-30 21:45 330 查看

异常:java程序 在运行时期发生的不正常的情况

java就按照面向对象的思想对不正常情况进行描述和对象的封装

Throwable

问题分两种:

Exception:jvm发生。并告诉给使用者,可以进行针对性的处理

Error: 由系统底层发生的,修改代码解决

异常的处理:

两种:

1,遇到问题不进行具体的处理,而是继续抛给调用者。

其实就是在函数上通过throws关键字声明异常,告诉调用者处理

2, 针对性的处理方式:捕获

try{

//有可能发生异常的代码



catch(异常类 变量)



//这是真正的捕获,处理异常的代码



finally{

//一定会被执行的代码



在定义功能时,需要在功能上对有可能发生的问题进行声明,

声明问题需要使用关键字 throws 异常类,声明目地是让调用者可以进行处理

throws Exception //声明异常

throw new 函数() //抛出异常

throw和throws有什么区别?

1,位置不同。

throws用在函数上,后面跟的是异常类,可以跟多个。

throw用在函数内,后面跟的是异常对象

2,功能不同

throws用来声明异常,让调用者只知道该功能有可能出现的问题,并由

调用者可以给出预先的处理方式。

throw抛出具体的问题对象。执行到throw功能就已经结束了,跳转到调用者,并将具体的问题对象也抛给调用者。

也就是说throw语句独立存在时,下面不要定义其他语句,因为执行不到

异常体系的最大特点:体系中的类以及类产生的对象,都具备这可抛性,可抛性意思是可以被throws和throw操作

异常的原则:

1,功能内部有异常throw抛出,功能上一定要throws声明

内部抛什么,功能就声明什么

声明的目地就是为了让调用者处理,如果调用者不处理,编译失败

2,特殊情况:

当函数内通过throw抛出了RuntimeException及其子类的异常对象时,函数上可以

不用throws声明。

不声明的目地就是不用调用者调用,让调用者的程序停止,要对代码进行修改。

Exception分两种:

1,编译时会被检测的异常。

2,运行时异常(编译时不检测)RuntimeException

异常:其实就是将问题封装成对象,并抛个调用者

如果声明了,就需要调用者处理(继续声明or捕获)

什么时候声明,什么时候捕获?

功能内部可以解决,就捕获,不能解决,或者解决了还必须告诉给调用者问题,这时就应该声明

finally作用是:无论是否有异常发生,都要对资源进行释放。

资源释放动作就定义在finally代码块中。

覆盖时:

子类方法覆盖父类方法只能抛出父类方法异常或者该异常的子类,

如果父类方法抛出多个异常,子类只抛出父类异常的子类

原则:就是子类的异常必须在父类的异常处理控制中

注意:有一种情况,只能try 不能throws

被覆盖的方法没有抛出异常,

那么子类在覆盖时,子类方法中发生了异常,就只能try无法throws声明。

class AException extends Exception()

{

super();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: