锁定老帖子 主题:老掉牙的话题,java的异常处理。
精华帖 (1) :: 良好帖 (6) :: 新手帖 (12) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-17
fangin 写道 kevin1988620 写道 我的处理的原则是,只捕捉checkexception,而忽略RuntimeException。
RuntimeExcepton的产生是程序员的责任,如配置文件写错,空指针引用等。应该是避免这样的异常发生,而不是发生后捕捉处理它。 CheckedException是程序员无法避免的,比如用户的非法输入,非法点击等。这样的异常既然没办法避免,就只能等它发生后再捕捉。 这不扯淡么,RuntimeExcepton是非常理想的捕捉对象。 如果自定义异常比较明确的话,把checkexception转成RuntimeException可以减少很多“throws”。 另外,配置错误不一定是程序员的错,许多大系统是由实施人员来实施的,你如何避免配置错误?避免不了就需要捕捉,抛出RuntimeException后可以用自定义异常处理机制来给用户明确的提示 支持,kevin1988620说的基本都是错的。 |
|
返回顶楼 | |
发表时间:2011-03-17
carlkkx 写道 所以我们真正需要的只是告知,即API的说明而已,异常也是API接口的一部分。注意仅仅是告知,但是Checked Exception违背了仅仅告知的原则而是在编译检查上做了很多强制,大量的乱吞异常由此产生。
乱吞异常的产生很大的原因是eclipse默认的处理方式 就是点红点的修改提示 这样一来 不懂的人就会随意的吞异常 虽然连续向上的throws exception非常的不友好, 但如果只有Runtime exception, 经常会忘记处理异常,直到测试发现,或者用户发现问题. 统一处理的话又缺乏恢复机制 |
|
返回顶楼 | |
发表时间:2011-03-17
spring dao封装excpetion是不用捕捉,我也这样做过
感觉如果自己内部就能消化这没什么问题,但如果是面向对方的服务,应该清楚告诉对方正常怎样,不正常怎样,什么异常会抛出来,就和合同一样,这本身就应该是函数调用的定义契约 不能别人觉得好好的,突然丢个出去,造成一堆调用中断 |
|
返回顶楼 | |
发表时间:2011-03-17
qianhd 写道 carlkkx 写道 所以我们真正需要的只是告知,即API的说明而已,异常也是API接口的一部分。注意仅仅是告知,但是Checked Exception违背了仅仅告知的原则而是在编译检查上做了很多强制,大量的乱吞异常由此产生。
乱吞异常的产生很大的原因是eclipse默认的处理方式 就是点红点的修改提示 这样一来 不懂的人就会随意的吞异常 虽然连续向上的throws exception非常的不友好, 但如果只有Runtime exception, 经常会忘记处理异常,直到测试发现,或者用户发现问题. 统一处理的话又缺乏恢复机制 照你这样throw下去,方法的接口都成什么样子了。。。。。。。。。 |
|
返回顶楼 | |
发表时间:2011-03-17
如果全是runtime exception你不catch,有些回滚操作怎么办?
|
|
返回顶楼 | |
发表时间:2011-03-17
Jazag.van 写道 如果全是runtime exception你不catch,有些回滚操作怎么办?
catch不catch是调用者的事,你把异常说清楚就行了。难道runtime exception就不能catch了? |
|
返回顶楼 | |
发表时间:2011-03-17
一下想到 checkexception的人就是喜欢瞎操心,喜欢替调用者想事情,喜欢强迫调用者怎么样。人家调用你的人到底怎么想的你无法武断定义的,你管好你自己模块就好了,你只要说清楚我正常怎么样错了怎么样就行了,怎么处理这件事你不能武断定义。
|
|
返回顶楼 | |
发表时间:2011-03-17
checkexception本根就是武断行为,自以为是的行为,喜欢强迫别人的行为,职责不清。
|
|
返回顶楼 | |
发表时间:2011-03-17
别人被强暴的多了,基本就是掩耳盗铃的乱吞异常,所以强暴带来的问题比它解决的多。
|
|
返回顶楼 | |
发表时间:2011-03-17
checkexception说白了,他鼓励抛出异常方强暴调用者,会培养武断自大的设计行为。
|
|
返回顶楼 | |