日期:2014-05-20  浏览次数:20873 次

catch里写throw,用处是什么?
在catch里再次throw出去一个异常,这种写法有什么用?如果需要将异常向上抛,那么在方法的后面直接throws不就好了吗?
请大牛们详细的解释下。。。
或者说这种写法好不好呢?
个人的看法是偏向不好,请指教

------解决方案--------------------
当然有用。

比如自己定义很多业务异常类。。当你的问题是属性业务逻辑,或者数据不对时,catch以后,抛出你的业务异常,在上一层进行捕获,进行不同的处理
------解决方案--------------------
用处是,在实现自身异常处理的同时告知调用方此异常的发生,并允许调用方可以捕获和处理此异常

这可以将每一层的异常处理分层整合。处理

有没有用可能得根据情况所定吧

比如说一套lib有自己的logger,那在自己的catch中以自己的方式log异常,之后也需要通知调用者此处出现异常,所以throw给调用方


------解决方案--------------------
1:记录一下日志
2:将 checked 异常包装成 unchecked 异常

其他我也想不出有什么原因了。
------解决方案--------------------
用于抛出用户容易理解的异常而不是底层的异常。这个在spring体现得淋漓尽致。例如,如果系统使用hibernate,ibatis,jdbc中的某一种,那么他们抛出的数据库异常信息就各不相同,如果客户或开发员只熟悉其中一种,那其他两种的异常就很难看懂,spring把这三种数据库连接可能抛出的异常,重新统一封装了,那么,我们只要了解spring的异常信息就可以了,不需要关心底层用的是哪种ORM,即使换成我们不熟悉的也没关系。