严重问题:Error 我们不处理,这种问题一般很严重,比如内存溢出
问题:Exception
编译期问题:不是RuntimeException异常 必须进行处理,因为你不处理编译就不能通过
运行期问题:RuntimeException 可以不处理,这个问题出现是代码不够严谨,需要修正
注意事项:能明确的尽量明确,不要用大的来处理
平级关系的异常谁先谁后无所谓,如果有父子关系,父必须在后
在try里面发现问题后,jvm会帮我们生成一个异常对象,然后把这个对象抛出,和catch里面的类进行匹配
异常中的方法:
A、getMessage(),返回异常信息字符串
B、toString()返回异常的简单信息描述:此对象的类的name(全路径):调用此对象getLocalizedMessage()方法(默认返回getMessage()内容)的结果
C、printStackTrace()获取异常类名和信息,以及异常的位置,返回值void,并把信息输出;
throws处理:格式:throws 异常类名 注意:必须跟在方法的括号后面
throw处理:如果出现了异常情况,我们可以把该异常抛出,这个时候的抛出应该是异常的对象
*****throws和throw:
throws用在方法声明后面,跟的是异常类名,可以跟多个异常类名,表示由调用者处理,这些异常不一定发生
throw用在方法体内,跟的是异常对象名,抛出异常对象,由方法体内的语句处理
finally:
特点:一定会执行
1、finally、final、finalize的区别
finally:一般来说代码肯定会执行,除非jvm退出
final:最终的意思,修饰类则不能被继承,修饰变量则为常量,修饰方法不能被重写
finalize:Object类的一个方法,用于垃圾回收
2、如果catch里面有return语句,finally里面代码还会执行吗?
会执行,在return前执行;
注意事项:
子类重写父类方法是,子类的方法必须抛出相同的异常或者父类异常的子类;总之子类不能抛出父类没有的异常