异常处理
2017-03-04 本文已影响1人
Suavitygogo
结构:
Throwable:
异常捕获:
可嵌套使用:
try{监控区代码块}【可选:catch(异常Exception,可捕获多个,从细到粗){}】finally{不管是否有异常捕获都会执行的代码块}
finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU。
执行过程:
抛出异常的两种方式:
a.方法内部直接抛出throw new MyException)();
b.方法名后把异常丢给上一级:throws Exception; 如果一直将异常抛到最顶层,就会由JVM自己处理。
1. Exception:程序本身可以处理的异常
a.不受编译器检查的异常类:运行期异常RuntimeException及其子类,可处理也可不处理,不受编译器检查。
b.受编译器检查的异常类:可预见的异常,编译器要求必须处置的异常,try-catch捕获或者抛出异常throws给上一级,否则无法编译成功。
c. 异常处理常见方法:
getCause():返回抛出异常的原因。如果 cause 不存在或未知,则返回 null。
getMeage():返回异常的消息信息。
printStackTrace():对象的堆栈跟踪输出至错误输出流,作为字段 System.err 的值。
2. Error:程序无法处理的错误,表示运行应用程序中较严重问题(JVM出现的问题)
自定义异常:继承extends Exception