9.19 异常学习笔记

异常概述

异常:是程序出现不正常的情况,所有异常类(Exception)和错误类(Error)都继承Throwable类。

1.Error: 指系统出现的严重错误,不可处理的错误,如内存溢出等,程序员无法解决的。
2.Exception:称为异常类,表示可以处理的错误。
3.异常主要分为编译期异常和运行时异常。
4.异常处理方式:
a. 使用try-catch-finally语句捕获。
当try语句块中出现异常,则捕获该异常,并将该异常对象作为参数传递给catch语句中,交由catch来判断是何种异常,
如果是某种异常则执行该catch里面的代码。

try{
/检测区
可能出现问题的代码;
/
}catch(异常类名 变量名){
/
处理异常的代码块
/
}finall{
/最终一定会执行的代码块/
}

如果出现多个异常,就写多几个catch语句块处理。

try{

}catch(){

}catch(){

}finally{
}

注意:如果出现子父类,则父类必须得放到最后;平级的则没有顺序要求
			无论catch是否执行,finally最终都会执行;除非执行System.exit(0)语句,jvm退出,则finally语句不执行。

b. 使用throw和thorws来抛出异常。

5.throws与throw的区别?
throws: 是在方法的声明参数列表的后面接上异常类名。
表示抛出异常由方法的调用者去解决或者继续抛出异常。
throw: 是在方法体里的,throw后面跟的是异常对象。
它只抛出一个异常,使用try-catch语句解决或继续抛出异常。

getMessage():得到异常的消息字符串。
toString():得到异常的描述信息。
getStackTrace():获取异常的类名和异常信息,以及异常出现在程序中的位置。

异常的注意事项:
1.子类重写父类的方法时,必须抛出和父类相同的异常或则它的子类。
2.如果父类有多个异常,子类也必须抛出相同的异常或则它的子类,子类不能抛出父类没有的异常。
3.子类重写父类的方法时,如果父类没有抛出异常,而子类有异常时只能使用try-catch语句要捕获异常。

fianl,finally,finalize之间的区别?
1.final
final 用来修饰常量的时候,表示的是不可更改的常量。
用来修饰方法的时候,表示该放法不能被重写。
用来修饰类的时候,表示该类 不能被继承
2.finally
用与try-catch语句中,表示无论怎么样finally语句块中的代码最终都会执行,除非使用 System.exit(0)语句,jvm退出,则不执行finally语句
3.finalize() 表示当垃圾回收器确定该对象不存在时,由对象的垃圾回收器去调用它,用于垃圾回收。

猜你喜欢

转载自blog.csdn.net/qq_41622994/article/details/82778726