不能光讲理论上,还得看看现实世界普通人写的java程序。
好了,大致分两派,一派是throws Exception,一派是throw new RuntimeException。
普通人没有能力把异常作为api设计的一部分,并且这样的程序也是支撑现实世界正常运转的一部分,这就是我的观察。
不管c,c++,go还是java,大部分程序的大部分函数里的错误处理,要么就是不管底层返回什么错误我照样返回(过程中处理好资源释放),要么就是不管底层返回什么错误我都返回同一个错误(把原错误包装在里面)。语言能帮助用户做好括号里的事就不错了。
【 在 here080 的大作中提到: 】
: java的异常设计最起码是基本合理的。
: 你自己写的函数,会抛出什么异常,这是API设计的一部分。你不应该以一种“哥反正啥都不处理,我调用的东西有啥异常我就抛啥”的态度来对待。理论上你只有搞清楚你自己写函数对外能且应该抛出什么异常,你才能合理的处理你从底层接收到的异常:是处理掉呢还是转化成别的异常还是直接不管抛出。
: 写python(大工程)最大的痛点之一就是尼玛我调用的这个函数会抛出啥神奇的异常根本就无法提前搞清楚。等上线了发现BUG再紧急修补。
--
修改:ilovecpp FROM 58.37.58.*
FROM 58.37.58.*