论坛首页 Java企业应用论坛

老掉牙的话题,java的异常处理。

浏览 36563 次
精华帖 (1) :: 良好帖 (6) :: 新手帖 (12) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-03-17  
fangin 写道
kevin1988620 写道
我的处理的原则是,只捕捉checkexception,而忽略RuntimeException。
RuntimeExcepton的产生是程序员的责任,如配置文件写错,空指针引用等。应该是避免这样的异常发生,而不是发生后捕捉处理它。
CheckedException是程序员无法避免的,比如用户的非法输入,非法点击等。这样的异常既然没办法避免,就只能等它发生后再捕捉。

这不扯淡么,RuntimeExcepton是非常理想的捕捉对象。
如果自定义异常比较明确的话,把checkexception转成RuntimeException可以减少很多“throws”。
另外,配置错误不一定是程序员的错,许多大系统是由实施人员来实施的,你如何避免配置错误?避免不了就需要捕捉,抛出RuntimeException后可以用自定义异常处理机制来给用户明确的提示

支持,kevin1988620说的基本都是错的。
0 请登录后投票
   发表时间:2011-03-17  
carlkkx 写道
所以我们真正需要的只是告知,即API的说明而已,异常也是API接口的一部分。注意仅仅是告知,但是Checked Exception违背了仅仅告知的原则而是在编译检查上做了很多强制,大量的乱吞异常由此产生。



乱吞异常的产生很大的原因是eclipse默认的处理方式
就是点红点的修改提示
这样一来 不懂的人就会随意的吞异常

虽然连续向上的throws exception非常的不友好,
但如果只有Runtime exception, 经常会忘记处理异常,直到测试发现,或者用户发现问题.

统一处理的话又缺乏恢复机制
0 请登录后投票
   发表时间:2011-03-17  
spring dao封装excpetion是不用捕捉,我也这样做过
感觉如果自己内部就能消化这没什么问题,但如果是面向对方的服务,应该清楚告诉对方正常怎样,不正常怎样,什么异常会抛出来,就和合同一样,这本身就应该是函数调用的定义契约
不能别人觉得好好的,突然丢个出去,造成一堆调用中断
0 请登录后投票
   发表时间:2011-03-17  
qianhd 写道
carlkkx 写道
所以我们真正需要的只是告知,即API的说明而已,异常也是API接口的一部分。注意仅仅是告知,但是Checked Exception违背了仅仅告知的原则而是在编译检查上做了很多强制,大量的乱吞异常由此产生。



乱吞异常的产生很大的原因是eclipse默认的处理方式
就是点红点的修改提示
这样一来 不懂的人就会随意的吞异常

虽然连续向上的throws exception非常的不友好,
但如果只有Runtime exception, 经常会忘记处理异常,直到测试发现,或者用户发现问题.

统一处理的话又缺乏恢复机制

照你这样throw下去,方法的接口都成什么样子了。。。。。。。。。
0 请登录后投票
   发表时间:2011-03-17  
如果全是runtime exception你不catch,有些回滚操作怎么办?
0 请登录后投票
   发表时间:2011-03-17  
Jazag.van 写道
如果全是runtime exception你不catch,有些回滚操作怎么办?

catch不catch是调用者的事,你把异常说清楚就行了。难道runtime exception就不能catch了?
0 请登录后投票
   发表时间:2011-03-17  
一下想到 checkexception的人就是喜欢瞎操心,喜欢替调用者想事情,喜欢强迫调用者怎么样。人家调用你的人到底怎么想的你无法武断定义的,你管好你自己模块就好了,你只要说清楚我正常怎么样错了怎么样就行了,怎么处理这件事你不能武断定义。
0 请登录后投票
   发表时间:2011-03-17  
checkexception本根就是武断行为,自以为是的行为,喜欢强迫别人的行为,职责不清。
0 请登录后投票
   发表时间:2011-03-17  
别人被强暴的多了,基本就是掩耳盗铃的乱吞异常,所以强暴带来的问题比它解决的多。
0 请登录后投票
   发表时间:2011-03-17  
checkexception说白了,他鼓励抛出异常方强暴调用者,会培养武断自大的设计行为。
0 请登录后投票
论坛首页 Java企业应用版

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