try...catch...要怎么用啊。。。

例程使用了spring框架来写
是基于xml的IOC例程
图片说明
上图是测试代码
图片说明
上图是操作数据库的实现方法

第一个是我写完那个return后,软件自动帮我生成的
第二个是老师给的例程
都是在try{}里写一个return
不是很懂为什么老师可以这么写

请大神给我讲一下是怎么回事,在try里写一个return要怎么处理

谢谢大神

5个回答

你的方法需要一个List类型的返回值,所以:
你的第一种情况,只在try代码块中return了,而在catch代码块中直接打印了错误信息,没有返回任何东西,这就相当一旦发生异常,你的这个方法就没有返回值,而实际上是需要返回值的,所以会报错;
你的第二种情况,在try代码块中return了,而且在catch代码块中抛出异常了,这就意味着你的代码一旦发生异常,就会在这个方法上抛出一个异常来,方法执行就此结束,因此抛出异常之后就不会报错。

丢出的错误不是sqlexception类型的,别的错误,你那么写catch不到。如果要拦截所有的错误,就必须用exception

因为你的方法findAllAccount是需要有一个返回值的,第一种写法中,当发现异常后,并没有返回值,而第二种写法是把异常抛出给上层。
所以第一种写法,需要在catch中新增返回,如在输出异常信息后新增一行代码:

return null;

因为抛出异常的代码后面不需要执行,其调用位置需要处理该异常。而第一个是因为你处理了异常,所以需要返回值。你可以尝试下,你第二种方式在抛出异常后写返回值是会报错的

第一个你的方法是需要返回list,但是你捕获异常之后只是打印了错了,并没有给返回值,可以增加return null或者空集合。第二个 是捕获之后抛出RunningTimeException,RunningTimeException是运行时异常,不需要被捕获。实际开发中,不推荐这样直接抛出异常,建议增加返回值。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问