java异常处理及400,404,500错误处理
java代码中经常碰到各种需要处理异常的时候,比如什么IOException SQLException NullPointException等等,在开发web项目中,遇到异常,我现在做的就是将其抛出,即在catch中throw new Exception()。这个throw new Exception也是有讲究的。
贴出异常简略图:
异常就分两大类:checked检查和unchecked非检查异常。
checkedException在编写代码的时候就必须要进行异常处理,uncheckedException在编写代码时可以不用处理,因为它是在程序运行时才可能会抛出异常。
拖拽可看大图。
一段代码中,可能会抛出多个异常,这就涉及到多重异常。这时对异常的处理就有点讲究了。
总的说来,如果异常间存在继承关系,则应该先把小异常放上面,越大的越写在后面。如果一开始就处理最大的异常,则它下面的子类在编译器中都会报错。如:
StringBuffer sb=null;
try {
sb.append("1");
System.err.println(sb.toString());
} catch (RuntimeException e) {
e.printStackTrace();
}catch (NullPointerException e){
e.printStackTrace();
}
在编译器中会给出如下错误:
Unreachable catch block for NullPointerException. It is already handled by the catch block for RuntimeException
NullPointerExeption无法捕获,因为已经在RuntimeException中捕获了。
处理异常时,必须提到异常转换和异常链。
异常链
重写方法时需要注意与原方法所抛出的异常类型一致或者是其子异常,或者不抛出异常,亦或者抛出RuntimeException异常。
异常设计的基本原则:
开发web项目时,遇到400,404,500等问题时,可以通过在web.xml中设置相关属性,即可跳转到指定页面
<error-page>
<error-code>400</error-code>
<location>error.jsp</location>
</error-page>
<error-page>
<error-code> 500 </error-code>
<location> error.jsp </location>
</error-page> <error-page>
<error-code> 405 </error-code>
<location> notfound.jsp </location> </error-page>