异常
什么是异常
- 程序不正常就是异常。
- jvm会处理程序中未处理的异常,步骤:暂停程序,报错
- 不要让jvm取处理异常
try-catch
语法结构
try{
有可能出现异常的代码块
}catch(声明异常){
异常解决办法
}
执行顺序
- 先执行try中块中的内容
- 如果try块中内容出现异常,执行catch块
- 匹配catch中声明的异常信息,如果匹配上,则执行catch中的代码
- 继续执行后续代码
- 如果catch中的异常信息没有匹配到,那么交由jvm处理该异常
try-catch-catch-…
语法结构
try{
//可能出现异常的代码段
}catch(异常1){
//异常 的解决办法
}catch(异常2){
//异常 的解决办法
}.......{
}
执行顺序
- 执行try块 如果出现异常 new出当前异常对象
- 逐一匹配catch中的异常内容
- 如果匹配上 执行对应的catch中的代码 整个try-catch执行结束
- 如果没匹配上,jvm去解决当前异常信息
注意事项
- 在多重catch中一般情况下会在最后一个catch语句中编写Exception 用来捕获可能未被识别的异常信息
- 不要再第一个catch中编写父类异常
try-catch-finally
语法结构
try{
//可能出现异常的代码
}catch(异常1){
//处理办法
}.....{
}finally{
//代码块一定会执行
关闭资源的代码
}
throw throws
异常对象的常见方法
常见方法 | 作用 | 用例 |
---|---|---|
toString | 当前异常类型以及原因描述 | java.lang.ArithmeticException: / by zero |
printStackTrace | 打印堆栈信息 异常类型以及原因描述 异常位置 | java.lang.ArithmeticException: / by zero at com.guxin.arrays.test.test01.main(test01.java:17) |
getMessage | 异常原因 | / by zero |
继承关系
在java中,异常对象都是派生于Throwable类的一个实例。如果java中内置的异常类不能满足需求,用户可以创建自己的异常类。
- 所有的异常都是由Throwable继承而来
不能满足需求,用户可以创建自己的异常类。