error(系统级的错误,我们处理不了,只能查错)RuntimeException为UncheckedException
另一类为CheckedException,如classNotFoundException,必须try …catch 或者throw掉的异常
抛出异常的语法
throws
java异常的传递
在方法调用之间传递,直至被Catch解决掉
程序是一层一层往里调用
而异常则是一层层往外抛,直至抛到main方法还没有人解决就报错
try {
caller2.call3Exception();
} catch (ClassNotFoundException ex) {
System.out.println("got exception in Caller1: "+ex.getMessage());
}
自定义异常
catch语句是根据异常类型匹配来捕捉相应类型的异常的
try {
Class.forName("com.neverland.Rabbit");
} catch (ClassNotFoundException ex) {
throw new MyException("", ex);
}
这就是checkedException
如果catch一个并没有被抛出的checked Exception,Java就会报错。因为java明确知道这个异常不会发生。
catch一个uncheckedException,不会报错
而且thorow谁(并没有被抛出的)都不会报错