关于异常抛出问题,有经验者进(50)

Linyco 2006-07-25 12:13:33
在进行WEB开发的时候,通常都是分为三层,显示层、业务逻辑层、数据访问层,我想知道一个类似find()的方法,如果找不到数据,是应该在find里面抛出一个类似RecordNotFoundException的异常还是利用返回值NULL来说明未找到呢?
  现在我都是用的RuntimeException的,但是有时觉得不太方便,比较在insert方法中,必须先利用find方法查找不存在才可以插入,那是不是所有的插入代码要写在catch里面?
  有时候异常都是同一类型的,例如使用Hibernate,在插入的时候,如果数据库出错会抛出一个HibernateException,而在已经有了这条记录的时候也会出现这个错误,那我应该如何利用这些异常提取错误信息呢?用getMessage()吗?假如我想国际化,岂不是要把所有的Message全翻译出来?
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Linyco 2006-07-25
  • 打赏
  • 举报
回复
TO kevinliuu(@。@) :
所谓再封闭是什么意思?是不是说写个这样的方法?
private boolean canInsert(){
try {
find();
catch(Exception e) {
return true;
}
return false;
}

我是想根据异常信息来给用户以提示,比如说:
数据库错误,请重试!
奇伢 2006-07-25
  • 打赏
  • 举报
回复
关注此问题
kevinliuu 2006-07-25
  • 打赏
  • 举报
回复
底层接口抛异常 ,给上面的业务逻辑层去处理

insert前先查询,这个方法最好再封装一次,返回一个布尔值,根据true false在进行insert操作


你所谓的国际化,是要把异常给用户看吗?你认为这么做合理吗? 异常是维护人员用来定位问题的,通常异常是以日志方式来记录的,对于所有出错操作,在用户看来,永远应该是一个提示性的语句。
OnlyFor_love 2006-07-25
  • 打赏
  • 举报
回复
为了让程序更健康和更有伸展性,异常一般都是自定义的,这样的话能准确的定位异常发生的地方。

有异常抛出的代码都应写在try中 不是catch中

81,092

社区成员

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

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