锁定老帖子 主题:异常应该如何使用?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-03-29
public User getUser(long id); { return userDao.getUser(id);; } public User getUser(long id); throws UserNotFoundException { User user = userDao.getUser(id);; if (user == null); throw new UserNotFoundException("...");; return user; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-03-29
在调用getuser方法时候要catch UserNotFoundException 并做相应处理。
|
|
返回顶楼 | |
发表时间:2005-03-30
那跟调用getuser方法时候判断user是否为null,再做相应处理有什么区别呢?
|
|
返回顶楼 | |
发表时间:2005-03-30
功能上没什么区别,一个只不过在方法里抛一个自定义的Exception,然后你可以在里面写一点信息,提示是什么错误之类,还有一个就是在使用这个方法时候判。自定义Exception本来就是根据需要自己写的,你完全可以不用,一般可以写个基类Exception,实现一些公用的功能,其他的Exception继承这个鸡肋。
|
|
返回顶楼 | |
发表时间:2005-03-30
z_jordon 写道 请问异常该如何被正确的使用,如下面的代码,哪一种比较合理?
public User getUser(long id); throws UserNotFoundException { User user = userDao.getUser(id);; if (user == null); throw new UserNotFoundException("...");; return user; } 如果你上面的代码是在业务层里面的,那么UserNotFoundException,我觉得是业务相关的异常,所以在此throw没什么问题。 |
|
返回顶楼 | |
发表时间:2005-03-30
异常说得是在当前的语义环境下,出现了没有预料的错误。
在根据用户ID获取用户对象的语义下,用户不存在实际上可以看成没有预料的错误。抛出异常比较恰当。 ps:看看下边的讨论。http://forum.hibernate.org.cn/viewtopic.php?p=9544&highlight= |
|
返回顶楼 | |
发表时间:2005-03-30
谢谢楼上的,我是用"异常"这个关键字来搜的,所以没搜到这些贴子。
|
|
返回顶楼 | |
发表时间:2005-03-30
这里好像不支持中文搜索。
|
|
返回顶楼 | |
发表时间:2005-04-01
z_jordon 写道 请问异常该如何被正确的使用,如下面的代码,哪一种比较合理?
public User getUser(long id); { return userDao.getUser(id);; } public User getUser(long id); throws UserNotFoundException { User user = userDao.getUser(id);; if (user == null); throw new UserNotFoundException("...");; return user; } 看你的代码在数据层的,应该使用第一段。 异常处理规则 1、只有在出现异常时才使用异常2、如无必要不要创建自己的Exception 3、不要用Exception来作流程控制4、不要轻易的忽略捕获的Exception 5、不要简单地捕获顶层的Exception |
|
返回顶楼 | |
发表时间:2005-04-01
dohkoos 写道 z_jordon 写道 请问异常该如何被正确的使用,如下面的代码,哪一种比较合理?
public User getUser(long id); { return userDao.getUser(id);; } public User getUser(long id); throws UserNotFoundException { User user = userDao.getUser(id);; if (user == null); throw new UserNotFoundException("...");; return user; } 看你的代码在数据层的,应该使用第一段。 异常处理规则 1、只有在出现异常时才使用异常2、如无必要不要创建自己的Exception 3、不要用Exception来作流程控制4、不要轻易的忽略捕获的Exception 5、不要简单地捕获顶层的Exception 所以啊,有必要翻翻 http://forum.hibernate.org.cn/viewtopic.php?p=9544&highlight= 当然,我是同意你的观点的。 因为一旦使用exception做这样的处理,那么客户端很可能就可能需要catch许多的exception。容易造成客户端程序员直接就是Catch一个基类exception,导致出错原因都未知,然后适当的状态回退都忘了。 这就不是编程风格、程序速度的问题了,而是程序正确性的问题。 但是,使用返回值的时候有一点问题, 编译器不会强行“客户端捕捉返回值”,也容易造成客户端程序员忽略那些null的返回值。唉~~ |
|
返回顶楼 | |