要分得这么仔细,我向来是在catch异常的时候,添加当前属性并入异常信息。
那么显示异常的时候,我就可以马上知道异常出在什么地方。
按理说系统不会自动判断异常在前台还是后台,还是那个累或者方法,它只会告诉你异常是哪种形式。
所以要详细捕捉异常,我认为最好是捕捉异常时添加当前某些特定属性,比如类名,方法名等
那么显示异常的时候,我就可以马上知道异常出在什么地方。
按理说系统不会自动判断异常在前台还是后台,还是那个累或者方法,它只会告诉你异常是哪种形式。
所以要详细捕捉异常,我认为最好是捕捉异常时添加当前某些特定属性,比如类名,方法名等
当然,需要在编程的时候,把各个异常和各类异常分析的清楚点,并尽量捕捉所有的异常
void method(int[] a) {
if(a.length == 0) ...
}
在a.length之前一定要判断a是不是null,否则。。找死你空指针异常是最难调试的东西。
所有东西都要确保非空之后才能使用,这是一个原则
if(a == null) then...
else if(a.length == 0) ...
}
pulic void doGet(HttpServletResquest req,HttpServletReponse resp)
throws ServletException,IOException{
...........
}
如果该方法中的ServletException或IOException没有被catch的话,该异常
就回传递到调用doGet()方法的代码,如果还没有被catch,则继续向上传递。
异常的传递路径回保存在一个Stack中,当catch到一个异常时可以通过
xxxException.printStackTrace(System.out)获得该异常的精确信息。一般
的做法是:
try{ ......
}catch(xxxException ex)
{System.out.println("Exception Message:"+ex.getMessage());
ex.printStackTrace();
//异常处理代码
}
finally{
//资源释放
}
response.sendRedirect("error?errid=theid")
}