我倒是认为 IO 错误不应该用异常来表示。因为 IO 错误太常见了。我们做网络开发的,时时都要注意网络断了数据包发不出去。
我喜欢最喜欢的异常是 bad_alloc,这个异常抛出来之后,对于程序员基本上啥事都不需要处理,直接整个程序崩溃掉就行。完全没有思维负担,这样的异常谁不喜欢啊。
我另外只使用两个异常,一个是 timeout 异常,一个是 kill 协程异常。这两个功能必须使用异常才能做好:
try {
Timeout _(5.0);
doSomething();
} catch (TimeoutException &) {
// 处理超时。
}
在以上代码里面,无论 doSomething() 里面有多少层级的调用。都能够准确地在 5 秒左右就超时跳出来。使用其它方案很难做到。
kill 协程的话,向协程抛出异常,然后让协程继续运行。这样协程就会从中断点——一般是 IO 读取位置退出。不用异常恐怕也很难做到这样。
基本上,我就用这三个异常。其它的我都不用。
【 在 mopo 的大作中提到: 】
: 除了IO exception老实说没多少有价值的异常
--
修改:hgoldfish FROM 117.28.110.*
FROM 117.28.110.*