java当中抓捕异常和抛出异常的最根本的区别是什么

牛路涵 发布于 2013/01/29 21:22
阅读 3K+
收藏 0
加载中
0
逝水fox
逝水fox
在于谁应该知道这个异常发生了,谁应该为这个异常做善后
逝水fox
逝水fox
回复 @iyuohz : 我觉得这个想法不对,要分析问题,才需要把异常的情况包括调用栈信息输出到文件里面保存而不是简单打印到页面上。所以需要日志什么内容很重要的。你的运营系统抛出的异常不是给用户看而是给你看的。
iyuohz
iyuohz
当初12306不就是把异常直接抛出,让人分析出它使用的框架了吗,捕获异常,是为了处理问题的,也可能会抛出自定义异常,具体问题具体分析
逝水fox
逝水fox
回复 @牛路涵 : 一辆句话说不清,其实口说没多少用。想想现实中你今天感冒请假这个异常,本来向上报告给你们部门经理处理即可以的,为什么要往上通知到你们公司的高层知道。另,异常抛出到调用栈的顶端将导致线程结束,因为谁都不处理。
牛路涵
牛路涵
麻烦说的明了点儿 我一直觉得能抛出的话 直接抛出去抛个最大异常 不是很省事儿么 为什么还要抓捕
0
j
jerrytao
假设是连接数据库失败 JDBC是抛出 让调用的人 也就是你 自己决定连接失败怎么处理 比如换一个备用的数据库 如果这个时候你不处理 继续抛出 就会抛到界面上 让用户看到 这样就是失败的作品 
0
DONFANS
DONFANS

个人理解:

关键就在于当前这层的上一层。有没有办法处理这个异常/实际应不应该交给上一层。

假设我们操作XML , Dao层有解析异常。 这时我们应该在当前这一层就处理了。

而不是抛给service层或者其他层。 但是即使处理。如果出了这种异常。

上一层基本就挂了。所以你应该记录日志+转型(比如运行时异常)。以便通知上一层。

0
吴尊前
吴尊前
异常发生了,你有更好的处理,就抓过来重新抛出,否则就不管他,让他自己往上抛。最后的结果就是让每个异常都得到妥善处理。
返回顶部
顶部