try…catch自己处理
格式:
Try {
// 可能出现异常的代码
} catch(异常类型 变量名) {
// 处理异常的逻辑
}
流程:
1)当try中代码出现异常, 产生异常对象, 将异常对象和catch括号中的异常变量进行匹配, 如果可以匹配上, 则把对象赋值给异常的变量,catch中代码会执行, 异常则已经处理完毕, try catch后续代码也能正常执行
2)如果不能匹配上,则try…catch捕获异常失败, 此时异常和没处理, 则会抛给方法的调用者
编译期异常, 只是比运行时异常多一个强制性要求,必须先给出预处理方案, 只要代码正常, 异常对象就不好产生。 类型得匹配
多个异常处理方式有三种:
//1 每一个异常一个try catch处理
//2 多个异常的处理: 一个try, 多个catch
/*
执行流程:
如果try中的代码产生异常了, 会讲异常信息封装Wie一个异常对象, 跟catch中的异常类型进行匹配, 如果匹配上则会将异常对象赋值给对应的异常变量, 并执行对应的catch大括号中的逻辑, 执行完后则整个try catch就结束了 没有第一个没有匹配上会有上往下去匹配
只会和其中一个catch匹配上
*/
// 3 还可以: 直接将多个可能出现异常的代码放入一个try中, catch多个异常 父类型
// 实际开发中: 将异常信息写入错误日志
注意:
如果多个catch有子父类关系, 子类的异常类型的catch必须放在父类的前面, 父类型会包含子类型
有时候我们需要某些代码在任意情况下都需要被执行,这个时候, 我们需要用到一个结构
格式:
Try {
// 可能出现异常的代码
} catch(异常类型 变量名) {
// 处理异常的逻辑
return; // 在方法结束之前, 可以留下遗言 return 可以跳出本方法。 一// 般不这样写
} finally {
// 任意情况下, 此处代码都会执行
}
System.exit(0); // 终止JVM运行, 则后续任何代码都不会执行 |
|