高分请教异常机制。

Joeblackyang 2002-04-19 04:00:58
系统中经常由于程序运行异常而终止,页面出现error 500, nullPointerException, 等等各种类型的错误信息,能不能有一种好的异常机制,可以比较准确地指出错误出现在何处(前台?后台?哪个类?哪个方法?),或者尽可能多地提供一些关键提示信息。
不要告诉我用try-catch-exception, 我说的是整个应用程序的异常机制。
好的建议我会多给些分,谢谢!
...全文
24 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
red-fly 2002-04-20
  • 打赏
  • 举报
回复
如果是在一个项目中,那么还得自己去catch异常,当catch到了的时候,就根据这种错误的类型把页面转到处理相应错误的jsp页面去
tomxutomxu 2002-04-19
  • 打赏
  • 举报
回复
catch (Exceptio e){
response.sendRedirect("error?errid=theid")
}
horseliu 2002-04-19
  • 打赏
  • 举报
回复
Java中的异常机制是按照调用树向上传递的。例如下面这个方法定义:
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{
//资源释放
}
kkhui 2002-04-19
  • 打赏
  • 举报
回复
也就是应该是

void method(int[] a) {
if(a == null) then...
else if(a.length == 0) ...
}
kkhui 2002-04-19
  • 打赏
  • 举报
回复
重要提示,所有可能发生NullPointException的地方再使用之前一定要判断是否为空,比如
void method(int[] a) {
if(a.length == 0) ...
}
在a.length之前一定要判断a是不是null,否则。。找死你

空指针异常是最难调试的东西。
所有东西都要确保非空之后才能使用,这是一个原则
Joeblackyang 2002-04-19
  • 打赏
  • 举报
回复
up
Joeblackyang 2002-04-19
  • 打赏
  • 举报
回复
我觉得我没有表达清楚,我是说相当于对整个网站设计一个异常机制,而不是对某个java程序,比如对所有的error500,nullPointerException等类型页面都要避免出现,而代之以error.jsp等描述错误的页面。我现在就是不知道如何准确地捕捉各种类型的错误。不知道我说清楚没有?
dragon_lxl 2002-04-19
  • 打赏
  • 举报
回复
如果你懒得加提示,那就多设断点进行跟踪吧!
dragon_lxl 2002-04-19
  • 打赏
  • 举报
回复
如果懒 的加提示,你就多设断点进行跟踪 吧!
GJA106 2002-04-19
  • 打赏
  • 举报
回复
同意楼上的,如果想知道异常具体中哪儿只能我们自己来添加提示了。
我们并不能保证每个类出现的异常不一样。
red-fly 2002-04-19
  • 打赏
  • 举报
回复
当然还得用try-catch-exception,不过,如果要想知道错误的具体地方和类型等等信息,需要多用try-catch-exception。只是把所有可能错误的地方都捕捉异常,每个地方都要写上自己的错误说明,这样,只要捕捉到这些说明,就会知道程序在错在什么地方。
当然,需要在编程的时候,把各个异常和各类异常分析的清楚点,并尽量捕捉所有的异常
alphazhao 2002-04-19
  • 打赏
  • 举报
回复
要分得这么仔细,我向来是在catch异常的时候,添加当前属性并入异常信息。
那么显示异常的时候,我就可以马上知道异常出在什么地方。
按理说系统不会自动判断异常在前台还是后台,还是那个累或者方法,它只会告诉你异常是哪种形式。
所以要详细捕捉异常,我认为最好是捕捉异常时添加当前某些特定属性,比如类名,方法名等

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧