Java异常体系

关于Java的异常类层次,在这张图上已经很清晰的显示出来。

Throwable:作为所有异常的祖先,分别有派生出Exception和Error两个子类。

Error:Error的出现表明是JVM作为一个运行环境出现了问题,导致程序抛出Error而崩溃。

Exception:程序运行本身的异常。派生出RuntimeException和IOException两大类。

RuntimeException:运行时异常,包括逻辑上的比如数组越界,空指针,类型转换错误,类找不到等等。与逻辑相关的异常,就应该从逻辑上避免,编译器不检查,也不要求一定处理。

非运行时异常:不处理,编译不通过。比如IOException和SQLException,以及用户自定义的异常。

 

异常的处理方式无非:

捕获:try...catch...

抛出:给上一层处理。在定义方法的时候抛异常使用throws。而在代码中主动抛异常则使用throw。以后别傻傻分不清,搞错可是要打自己屁股的。

 

多个异常同时发生,并且异常之间是继承关系,如何运行?

答案是:

Exception作为所有异常的祖先,如果放在其他异常的前面,会编译异常,通过不了语法检查。

否则,Exception放在最后,那么最精确匹配的异常才会执行。

posted @ 2016-12-06 21:16  天涯海角路  阅读(68)  评论(0)    收藏  举报