论坛首页 入门技术论坛

问个底层的问题:RuntimeException

浏览 8019 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-10-30  
最近用springMVC+ibatis搞一个东西;在开发中碰到了一个问题:
/**
 *查询所有货品信息
 */
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的具体应用吧!谢谢!
   发表时间:2006-10-30  
和你的Exception类型无关
是那句 throw e; 的问题
0 请登录后投票
   发表时间:2006-10-30  
你CATCH完了,程序接着往下走,
自动结束,没有返回一个List,
编译器当然报“没有返回值”的错误。
0 请登录后投票
   发表时间:2006-10-30  
ddandyy 写道
和你的Exception类型无关
是那句 throw e; 的问题


那么,用Exception 时就不能有throw了啊?还是和RuntimeException相关啊!有更好的解决方法吗?
0 请登录后投票
   发表时间:2006-10-30  
谁说Exception不能有throw  报错么? 你试过了?

仔细看看你那两个东西   除了catch的Exception的类型不同外  还有哪里不一样
不一样的东西  你就对比  那你得出的结论是正确的么
0 请登录后投票
   发表时间:2006-10-30  
ddandyy 写道
谁说Exception不能有throw  报错么? 你试过了?

仔细看看你那两个东西   除了catch的Exception的类型不同外  还有哪里不一样
不一样的东西  你就对比  那你得出的结论是正确的么


呵呵!我没说Exception不能有throw,我说添上throw还是报错(说我没处理异常);我肯定是试过了才这么说!
0 请登录后投票
   发表时间: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.

0 请登录后投票
   发表时间: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吧!
0 请登录后投票
   发表时间:2006-10-30  
在方法定义的时候声明不处理异常就行了吧
  public List getGoods()throws Exception{
  .....
  }
看了以下api
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。
所以你的第一种做法不会有错误,而用Exception就要进行声明了
  呵呵!不知道对不对

0 请登录后投票
   发表时间:2006-10-30  
小贾 写道

老兄,我的第一种写法是正确的;我只是想弄懂如果仅使用Exception时,该怎么操作!看来我还是老老实实去看API吧!

第一种写法也说不上正确,捕捉一个runtimeexception没有任何包装就throw,那为什么捕捉?
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics