1.继承体系
throwable是所有异常和错误的祖先接口,其下有两个分支Error,Exception.如下图所示
(体系图在文章末尾)
<!--StartFragment -->
2.强制检测异常:
所谓的强制检测异常就是在代码编译之前(或者说运行前),我们就必须处理掉的,用try...catch...处理掉的异常 ,对于这类异常的处理
对于这类异常,我们都知道用try...catch...很轻松就搞定了,但是当出现多个强制检测异常被我们习惯性的放入 了一个try。。。catch。。。
中去了,在调试中,我们将会遇到很多的麻烦;这是其一。其二,当在try...catch...中的代码很长时,我们会把它重新包装在一个方法中去,
如此重重包装,在我们的包装方法中同样可能需要处理,这就关系到是要throws还是try...catch...啦
如下代码示例
public class ExceptionTest2 {
public static void main(String args[]) {
ExceptionTest2 et = new ExceptionTest2();
et.test();
}
// 处理方案1:try...catch...掉
public void test() {
while (true) {
System.out.println("sdfsafsa");
try {
Thread.sleep(1000);
} catch (Exception ef) {
ef.printStackTrace();
}
}
}
}
public class ExceptionTest2 {
// 在主程序中还得向上抛出,抛给虚拟机处理
public static void main(String args[]) throws Exception {
ExceptionTest2 et = new ExceptionTest2();
et.test();
}
// public void test0(){
// while(true){
// System.out.println("fsafdsf");
// Thread.sleep(1000);//Unhandled exception type InterruptedException
// }
// }
// 处理方案2:向上抛出异常
public void test() throws Exception {
while (true) {
System.out.println("fsafdsf");
Thread.sleep(1000);
}
}
}
3.非强制异常:(RuntimeException)
就是在运行到出错的地方的时候,然后会在控制台输出错误信息的的那种,也称为运行时异常常见的如NullPointerException,ArrayOutOfBoundary
都是老朋友了。