异常(Exception)
描述
JAVA中的异常都继承自java.lang.Throwable
异常关系 :
异常分类
- 检查型异常
如果开发者没有去处理这些异常则会报错,除了error.runtingException以外的异常都叫检查型异常 - 非检查型异常 Error,RuntingException异常.如上图.
编译器不会报错,可能会报错。但是没有去处理报的异常。
异常处理方法
- try catch
- throw -----抛出异常
检查型异常
需要手动抛出的异常为检查型异常。例如上图必须抛出的异常
编译器要求必须处置的异常
异常处理–非检查型异常
不用去处理他,可能会抛出异常类。为非检查型异常
编译器不要求强制处置的异常
场景
- 常见的空指针异常
- 死循环
- 内存不够
finally
- try 或者 catch 正常执行后, 一般会执行finally的代码
- 如果在执行try或者catch的过程中,jvm被杀死或者进程终止。finally可能不会执行
- 程序被return,brean停止后,都会执行finally方法
try(
}catch(){
}finall6{
}
try{
}finally{
}
throws
throws流程
如果使用了throws抛出异常,则会吧产生异常的方法抛给上一个方法。上一个方法如果不处理。继续throw抛出。则继续抛给上一个方法。最后都不处理则抛给JVM.
自定义异常
- 开发中自定义异常都是只有两种写法,一种继承与Exception,RuntimeException
- 继承自Exception是用起来会复杂,希望开发者重视这个异常并且认真处理
- Runtime使用起来会简洁,不严格要求开发者去处理这个异常
使用异常的好处
- 将错误的代码与普通的代码区分开
- 当发生错误时,程序不至于崩溃。
- 当发生错误时,可以在短时间内找到错误所在行,能节省时间。