java异常处理的五个关键字:try、catch、finally、throw、throws
1.throw关键字
作用:可以使用throw关键字在指定的地方中抛出指定的异常
使用格式:throw new xxxException("异常产生的原因");
注意:
1.必须写在方法的内部
2.throw关键字后边new的对象必须是Exception或者Exception的子类对象
3.throw关键字抛出指定的异常对象,我们就必须处理这个异常对象
throw关键字后边创建的是RuntimeException或者是RunException的子类对象,我们可以不处理,默认交给JVM处理(打印异常对象,中断程序)
throw关键字后边创建的是编译异常(写代码的时候报错)我们就必须处理这个异常,要么throws要么try....catch
2.声明异常throws关键字
throws关键字:异常处理的第一种方式,交给别人处理
作用:
当方法内部抛出异常对象的时候,那么我们就必须处理这个异常
可以使用throws关键字处理异常对象,会把异常对象声明抛出给方法的调用者处理(自己不处理,交给别人处理)最终交给JVM处理-->中断处理
使用格式:在方法声明时使用
修饰符 返回值类型 方法名(参数列表)throws AAAException,BBBException .... {
throw new AAAException("产生原因");
throw new BBBException("产生原因");
.....
}
注意:
1.throws关键字必须写在方法声明处
2.throws关键字后边声明的异常必须是Exception或者是Exception子类
3.方法的内部如果抛出了多个异常处理对象,那么thorows后边必须也声明多个异常,
如果抛出的多个异常对象有子父类关系,那么直接声明父类异常即可
4.调用了一个声明抛出异常的方法,我们就必须的处理声明的异常
要么继续使用throws交给方法的调用者处理,最终交给jvm处理,要么try,,,catch 自己处理异常
3.try...catch
异常处理的第二种方式,自己处理异常
格式: try{
可能产生异常的代码
} catch( 定义一个异常变量,用来接收try中抛出的异常对象){
异常的处理逻辑,产生异常对象怎么处理异常对象
一般在工作中,会把异常对象信息记录到日志中
}
注意:
1.try中可能会抛出多个异常对象,那么就可以使用多个catch来处理这些异常对象
2.如果try中产生了异常,那么就会执行catch中的异常处理逻辑,执行完毕catch中的处理逻辑,继续执行try...catch之后的代码
如果try中没有产生异常,那么就不会执行catch中异常的处理逻辑,执行完try中的代码,继续执行try后面的代码
Throwable类中定义了3个异常处理的方法
1. String getMessage() 返回此throwable的简短描述
2.String toString() 返回此throwable的详细消息字符串
3.void printStackTrace() JVM打印异常对象,默认此方法,打印异常信息最全面
4. finally代码块
格式: try{
可能产生异常的代码
} catch( 定义一个异常变量,用来接收try中抛出的异常对象){
异常的处理逻辑,产生异常对象怎么处理异常对象
一般在工作中,会把异常对象信息记录到日志中
} finally{
无论是否出现异常都会执行
}
注意:
1.finally不能单独使用,必须和try一起使用
2.finally一般用于资源释放,无论程序是否出现异常,最后都要资源释放(IO)