请教一些异常的问题

romanitc 2011-06-28 09:51:33
1:做项目时,在可能出现异常的地方用try catch捕捉, 还是在类后面throws异常??
2:做项目时,在哪些地方应该要用try catch?不近捕捉可以吗?

个人感觉:我写项目时没有注意异常方面,这样合理吗?
...全文
90 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinghen88 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 romantic_pk 的回复:]
如果在每一个方法里都加try catch的话,不影响性能吗?还有代码量也增加不少?

引用 3 楼 xinghen88 的回复:
1.个人感觉还是在每个方法中添加try catch比较好一些,在catch可以自己定义输出的一些语句(例如标注是哪个类中哪个方法下的异常)然后加上异常信息(e.getMessages()),这样查找错误的时候比较方便,一看输出的异常信息就能确定哪个方法出的错。
……
[/Quote]
对性能肯定有影响,上面说的不太准确,对于明知道不可能出错的方法当然不用加异常处理。常见的异常无非就是空指针和类型转换错误和数据库连接错误,在使用这些的地方加上就可以了
romanitc 2011-06-28
  • 打赏
  • 举报
回复
你们写项目时都用异常处理吗?具体在哪些地方用?
romanitc 2011-06-28
  • 打赏
  • 举报
回复
如果在每一个方法里都加try catch的话,不影响性能吗?还有代码量也增加不少?[Quote=引用 3 楼 xinghen88 的回复:]
1.个人感觉还是在每个方法中添加try catch比较好一些,在catch可以自己定义输出的一些语句(例如标注是哪个类中哪个方法下的异常)然后加上异常信息(e.getMessages()),这样查找错误的时候比较方便,一看输出的异常信息就能确定哪个方法出的错。
2.还是个人感觉在具体操作(增删改查),或者变量类型转换的地方都添加上异常处理,这样即使有错误也能准确定位,正确处理。
3.不注意异常……
[/Quote]
qybao 2011-06-28
  • 打赏
  • 举报
回复
这个就要看你提供的方法的对异常处理有什么要求了
如果你的方法,是希望别人调用的时候自己处理异常,那么就throws
否则,就自己处理

比如
希望别人处理异常,用户需要保证一些条件才能让你的方法正常执行
如果用户没有确保条件,你就抛出异常,结束处理
void somemethod() throws SomeException {
if (some_exception_occurs_then_method_can_not_continue) {
throw new SomeException(you_must_insure_conditions_to_continue_the_method);
}
}


自己处理异常
用户即使不确保调用方法的条件,你也希望方法继续执行,哪怕不能得到用户期望的结果
void somemethod() {
try {
//do something
} catch (Exception e) {
//you_can_do_something_here_to_handle_the_exception
}
}
空白-键 2011-06-28
  • 打赏
  • 举报
回复
这个要看你具体情况了,比如如果你捕获到的是SessionException(自己定义的异常,没登陆或session过期时抛得异常),这个时候就应该捕获,然后转到登录页面。还有就是数据库异常,这个也应该要捕获,然后转为自己包装的异常类再往上抛,这个时候上一层的方法捕获到这个异常,然后就看你是要继续捕获再包装,还是直接往上抛,很多异常是不捕获的。
xinghen88 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kevin_520_kevin 的回复:]
try..catch主要是在你项目出错的时候不至于一下出现报错页面,但是会影响性能,throws是将捕获的异常再次抛出,可以使得你获得跟多的异常信息
[/Quote]
顶,try catch确实对系统性能有所影响。不过一般不要求过于灵敏的系统用下还是可以的。
小绵羊 2011-06-28
  • 打赏
  • 举报
回复
你有能力处理的错误就是用try catch处理掉,无法处理或者要交给后面处理的就抛出去,不要简单的打印一下堆栈信息就完了
xinghen88 2011-06-28
  • 打赏
  • 举报
回复
1.个人感觉还是在每个方法中添加try catch比较好一些,在catch可以自己定义输出的一些语句(例如标注是哪个类中哪个方法下的异常)然后加上异常信息(e.getMessages()),这样查找错误的时候比较方便,一看输出的异常信息就能确定哪个方法出的错。
2.还是个人感觉在具体操作(增删改查),或者变量类型转换的地方都添加上异常处理,这样即使有错误也能准确定位,正确处理。
3.不注意异常处理肯定不是个好习惯,楼主还是慢慢尝试的添加异常处理吧,等你习惯了你会发现添加异常处理是多么的明智。
kevin_520_kevin 2011-06-28
  • 打赏
  • 举报
回复
try..catch主要是在你项目出错的时候不至于一下出现报错页面,但是会影响性能,throws是将捕获的异常再次抛出,可以使得你获得跟多的异常信息
joaryyu 2011-06-28
  • 打赏
  • 举报
回复
一个方法下有多个可捕获异常,每个异常都捕获,然后再抛出此方法的处理异常。
void method() throws MethodException {
try {
submethod1();
}catch(Submethod1Exception e) {
throw new MethodException("cause by....Submethod1Exception");
}catch(Submethod1Exception2 e) {
throw new MethodException("cause by....Submethod1Exception2");
}
.
.
...
}

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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