四:异常的处理
(2)try-catch捕获并处理
throws 对异常并没有处理,而是将异常报告给抛出异常方法的调用者,由调用者处理。如果真正要对异常进行处理,就需要try-catch
语法格式:
语法格式:
try{
// 将可能出现异常的代码放在这里
}catch(要捕获的异常类型 e){
// 如果try中的代码抛出异常了,此处catch捕获时异常类型与try中抛出的异常类型一致时,或者是try中抛出异常的基类
时,就会被捕获到
// 对异常就可以正常处理,处理完成后,跳出try-catch结构,继续执行后序代码
}[catch(异常类型 e){
// 对异常进行处理
}finally{
// 此处代码一定会被执行到
}]
// 后序代码
// 当异常被捕获到时,异常就被处理了,这里的后序代码一定会执行
// 如果捕获了,由于捕获时类型不对,那就没有捕获到,这里的代码就不会被执行
注意:
1. []中表示可选项,可以添加,也可以不用添加
2. try中的代码可能会抛出异常,也可能不会
注意事项:
(1)try块内出异常位置之后的代码就不会被执行
(2)如果抛出异常类型与catch中的异常类型不匹配,即异常不会被成功捕获,也就不会被处理,继续往外抛,知道jvm收到中断程序---异常是按照类型来捕获的。
(3)try中可能会抛出多个不同的异常对象,则必须用多个catch来捕获-----即多种异常,多次捕获。
(4)如果异常之间具有父子关系,一定是子类异常在前catch,父类异常在后catch,否则语法报错。
例如:子类在父类前
代码:父类在子类前(代码会报错)
(3)finally
在写程序时,有些特定的代码,不论程序是否发生异常,都需要执行,finally就可以解决这个问题。
注意:try块内的代码无论是否有异常,finally中的代码都会被执行。
例如: