java异常处理的五个关键字:try、catch、finally、throw、throws,在继承关系中父类异常什么样,子类异常什么样
1、throw
作用:可以使用throw关键字在指定的方法中抛出指定的异常
格式:
throw new xxxException("异常产生的原因");
注意:
1、throw关键字必须写在方法的内部
2、throw关键字后边new的对象必须是Exception或者是exception的子类对象
3、throw关键字抛出指定的异常对象,我们必须处理这个异常对象
比如throw关键字后边创建的是RuntimeException或者是RuntimeException的子类对象,我们可以不处理,默认交给jvm处理(打印异常对象,中断程序)
如果创建的是编译异常,我们就必须处理这个异常,要么throws,要么try…catch
2、throws
当方法内部抛出异常对象的时候,那么我们就必须处理这个异常对象
可以使用throws关键字处理异常对象,会把异常对象声明抛出给方法的调用者处理,最终交给jvm处理
格式:在方法声明时使用
修饰符 返回值类型 方法名(参数列表) throws {
throw new XXXException(“产生原因”)
}
注意:throws关键字必须写在方法声明处,后边声明的异常必须是Exception或者是Exception的子类
方法内部如果抛出了多个异常对象,那么throws后边必须也声明多个异常,如果抛出的多个异常对象有子父类关系,那么直接声明父类异常即可
调用了一个声明抛出异常的方法骂我们就必须处理声明的异常
3、try…catch
格式:
try{
可能会异常的代码
}catch(定义一个异常变量,用来接收try中抛出的异常对象){
异常处的处理逻辑,产生异常对象之后,怎么处理异常对象
}
注意事项:
1、try中可能会抛出多个异常对象,那么就可以使用多个catch来处理这些异常对象
2、如果try中产生了异常,那么就会执行catch中的异常处理逻辑,执行完毕catch中的逻辑后继续执行try…catch之后的代码
3、如果try中没有产生异常,则不会执行catch中的处理逻辑,执行完try中的菜吗,继续执行try…catch之后的代码
4、finally
finally代码块是和try…catch连用的,无论是否出现异常,finally都会执行,无法单独使用,一般用于资源释放
格式:
try{
可能会异常的代码
}catch{
处理异常的逻辑
}finally{
无论是否出现异常都会执行的代码块
}
注意:如果finally中有return语句,永远返回finally中的结果,所以要避免此类事件发生不在finally中写return语句。