标签:
关于Java的异常类层次,在这张图上已经很清晰的显示出来。
Throwable:作为所有异常的祖先,分别有派生出Exception和Error两个子类。
Error:Error的出现表明是JVM作为一个运行环境出现了问题,导致程序抛出Error而崩溃。
Exception:程序运行本身的异常。派生出RuntimeException和IOException两大类。
RuntimeException:运行时异常,包括逻辑上的比如数组越界,空指针,类型转换错误,类找不到等等。与逻辑相关的异常,就应该从逻辑上避免,编译器不检查,也不要求一定处理。
非运行时异常:不处理,编译不通过。比如IOException和SQLException,以及用户自定义的异常。
异常的处理方式无非:
捕获:try...catch...
抛出:给上一层处理。在定义方法的时候抛异常使用throws。而在代码中主动抛异常则使用throw。以后别傻傻分不清,搞错可是要打自己屁股的。
多个异常同时发生,并且异常之间是继承关系,如何运行?
答案是:
Exception作为所有异常的祖先,如果放在其他异常的前面,会编译异常,通过不了语法检查。
否则,Exception放在最后,那么最精确匹配的异常才会执行。
标签:
原文地址:http://my.oschina.net/gaohongtian/blog/494779