throws Exception 小疑点

throws Exception 小问题

public int addUser(User user) throws Exception {

 

try {

userDao.save(user);

return user.getId();

} catch (RuntimeException e) {

e.printStackTrace();

throw new Exception("新增用户异常");  //这个地方,如果注释掉这句话  ,要return 0;

}

}

 

 

throw new Exception("新增用户异常");  //这个地方,如果注释掉这句话  ,要return 0;

 

加上这句话就不用写返回值了,怎么回事?? 有高手给解答一下

1 楼 boyuliu 2011-06-23  
你注意看你的代码return的地方,你在try里面也return了,一般一个方法里面只有在最后一个地方才能return,你这里就像if...else... 一样,你if里面return了,else里面也必须return,如果你if...else... 里面没return   就在最外面return就行了。

不知道你懂了没?你这里只要把try里面的return写到try...catch块外面就行了
2 楼 tomfish88 2011-06-24  
把try里面的return写到try...catch块外面是对的我知道

现在他没在外面,上面的例子是没有异常的,按常理我们应该在try...catch块外面return
,现在没有,而是加了一句 throw new Exception("新增用户异常"); 这样就不用在外面return了,这是什么道理?  我知道这样做的原因是mvc中,避免c中的异常在v中显示,但语法上,这样做为啥没异常呢
3 楼 zhanghh321 2011-07-25  
方法要有返回值啊 要么返回要么抛出异常啊
一旦try里面出现异常,方法就要跳到catch里面了,因此catch里面要么返回要么抛出异常
4 楼 tomfish88 2011-07-25  
zhanghh321 写道
方法要有返回值啊 要么返回要么抛出异常啊
一旦try里面出现异常,方法就要跳到catch里面了,因此catch里面要么返回要么抛出异常


明白了,非常感谢