精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-30
/** *查询所有货品信息 */ public List getGoods() { try { return this.goodsDao.findTotal(); } catch (RuntimeException e) { log.error(e); throw e; } } 使用上面这种写法是正常的; 但是如果采用 /** *查询所有货品信息 */ public List getGoods() { try { return this.goodsDao.findTotal(); } catch (Exception e) { log.error(e); } } 这样写为什么就会报错?说该方法没有返回值;有那位对异常处理熟悉,给讲一下上面的错误和RuntimeException的具体应用吧!谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-30
和你的Exception类型无关
是那句 throw e; 的问题 |
|
返回顶楼 | |
发表时间:2006-10-30
你CATCH完了,程序接着往下走,
自动结束,没有返回一个List, 编译器当然报“没有返回值”的错误。 |
|
返回顶楼 | |
发表时间:2006-10-30
ddandyy 写道 和你的Exception类型无关
是那句 throw e; 的问题 那么,用Exception 时就不能有throw了啊?还是和RuntimeException相关啊!有更好的解决方法吗? |
|
返回顶楼 | |
发表时间:2006-10-30
谁说Exception不能有throw 报错么? 你试过了?
仔细看看你那两个东西 除了catch的Exception的类型不同外 还有哪里不一样 不一样的东西 你就对比 那你得出的结论是正确的么 |
|
返回顶楼 | |
发表时间:2006-10-30
ddandyy 写道 谁说Exception不能有throw 报错么? 你试过了?
仔细看看你那两个东西 除了catch的Exception的类型不同外 还有哪里不一样 不一样的东西 你就对比 那你得出的结论是正确的么 呵呵!我没说Exception不能有throw,我说添上throw还是报错(说我没处理异常);我肯定是试过了才这么说! |
|
返回顶楼 | |
发表时间:2006-10-30
这完全是两个不同的问题
前一个是因为方法没有返回值 后一个是因为Exception 不知道你的业务是什么 在这catch这东西是为了要打log么 从代码上看估计是的 具体怎么改要看的业务到底要做到什么程度了 至于说后一个异常是为什么 我想你可以看看javadoc public class Exception The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch. public class RuntimeException RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine. A method is not required to declare in its throws clause any subclasses of RuntimeException that might be thrown during the execution of the method but not caught. |
|
返回顶楼 | |
发表时间:2006-10-30
ddandyy 写道 这完全是两个不同的问题
前一个是因为方法没有返回值 后一个是因为Exception 不知道你的业务是什么 在这catch这东西是为了要打log么 从代码上看估计是的 具体怎么改要看的业务到底要做到什么程度了 至于说后一个异常是为什么 我想你可以看看javadoc public class Exception The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch. public class RuntimeException RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine. A method is not required to declare in its throws clause any subclasses of RuntimeException that might be thrown during the execution of the method but not caught. 老兄,我的第一种写法是正确的;我只是想弄懂如果仅使用Exception时,该怎么操作!看来我还是老老实实去看API吧! |
|
返回顶楼 | |
发表时间:2006-10-30
在方法定义的时候声明不处理异常就行了吧
public List getGoods()throws Exception{ ..... } 看了以下api 可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。 所以你的第一种做法不会有错误,而用Exception就要进行声明了 呵呵!不知道对不对 |
|
返回顶楼 | |
发表时间:2006-10-30
小贾 写道 老兄,我的第一种写法是正确的;我只是想弄懂如果仅使用Exception时,该怎么操作!看来我还是老老实实去看API吧! 第一种写法也说不上正确,捕捉一个runtimeexception没有任何包装就throw,那为什么捕捉? |
|
返回顶楼 | |