java异常
Throwable:
1.Error 错误
2.Exception 异常
Exception 1.运行时异常
2.编译时异常
Throwable 常用的方法
toString() 返回当前异常对象的完整类名
getMessage() 返回详细异常消息,就是创建Throwable 传入的字符串
printStackTrace() 打印异常的栈信息
Error 错误一般是用于JVM或者是硬件引发的问题,所以我们一般不会通过代码去处理错误
Exception 异常 是需要通过代码去处理的
如何区分错误与异常呢:
如果程序报错,类名是以Error结尾的,那么肯定是一个错误,
如果是以Exception结尾的,那么肯定就是一个异常
处理异常
方式1;
try {
可能发生的异常的代码;
}catch(捕获异常的类型 变量名){
处理异常代码
}
捕获处理要注意的细节
1:如果try块中代码出了异常经过了处理之后,那么try-catch块外面的代码可以正常执行
2:如果try块中出了异常的代码,那么try块中出现异常代码后面的代码就不会执行了
3:一个try块后面是可以跟有多个catch块的,也就是一个try块可以捕获多种异常的类型
4:一个try块可以捕获多种异常的类型,但是捕获的异常类型必须从小到大进行捕获,否则编译报错
5;finally代码块,最后一定会执行,不管是return,还是什么,除非退出jvm
注意:以后捕获异常不可以都用Exception ,因为实际开发中遇到不同的异常类型的时候,我们会有不同的处理方式,所以要分开不同的异常类型
处理方式2
抛出异常
throws Exception
抛出异常要注意的细节
1,如果一个方法的内部抛出了一个异常对象,那么必须在方法上声明抛出。
2,如果调用了一个声明抛出异常 的方法,那么调用者必须要处理异常。
3,如果一个方法内部抛出了一个异常对象,那么throw语句后面的代码都不会在执行了。
4,在一种情况下,只能抛出一种类型 的异常对象
throw 和throws俩个关键字区别:
1,throw关键字是用于方法内部的,throws使用方法声明上的
2,throw关键字是用于方法内部抛出一个异常对象的,throws关键字是用于在方法声明上抛出异常类型的。
3,throw关键字后面只能有一个异常对象,throws后面一次可以声明抛出多种类型的异常
throws和try使用时机,如果你需要通知调用者,你代码出了问题,那么这时候就使用抛出异常,如果代码是直接客户打交道千万不能抛出,在抛的话就给用户了,这时候就应该捕获的