太对了哈哈哈。
C++异常就是throw的人表示我不关心你会goto到哪里,反正我就是不爽了;
然后在调用的人看来就是我也不知道哪个底层函数的什么地方突然抽风蹦出一个goto,然后goto到了谁也不知道的地方,而且无法保证编译期间就catch了所有的异常。
C++异常的非强制性保证了你可以假装不知道有异常,但事实是你不仅不能假装不知道,而且你其实想知道也不能完全知道,你只知道你只能知道得不完整。
什么你说可以catch(...)?那就完美地破坏了bug现场,使得程序带病继续运行到谁也搞不清楚究竟发生了啥。
这种奇葩设定使得我只会在出错概率极高的场合使用异常(比如socket),并且只在极少量地方catch,并且绝对不往外扔。
【 在 here080 (hero080) 的大作中提到: 】
: java的异常设计最起码是基本合理的。
: 你自己写的函数,会抛出什么异常,这是API设计的一部分。你不应该以一种“哥反正啥都不处理,我调用的东西有啥异常我就抛啥”的态度来对待。理论上你只有搞清楚你自己写函数对外能且应该抛出什么异常,你才能合理的处理你从底层接收到的异常:是处理掉呢还是转化成别的
: 写python(大工程)最大的痛点之一就是尼玛我调用的这个函数会抛出啥神奇的异常根本就无法提前搞清楚。等上线了发现BUG再紧急修补。
: ...................
--
修改:yuanmo FROM 61.50.110.*
FROM 61.50.110.*