C++异常的主要问题是它个半拉子,拉屎拉一半。
最开始,你按照书上说的用了异常,一切都显得很高大上。
当项目变得有一点规模以后,你调一个函数,然后这个函数你不知道啥原因就会抛出一个异常,你不catch就会崩,你要catch也不知道该catch啥类型,不过你还是catch了抛出的那个。
但是它又冒出第二个、第三个、第N个异常,你开始烦了,但是你还是耐心地全部catch了一通,代码变得很冗长。
但是你发现就算你仔细看了这个函数,还是保不齐这个函数下面的函数会抛异常,于是有时候你catch(...),有时候你又觉得应该负责任一些,于是继续往上throw
然后你的上层函数又发疯了,怎么原先好好的突然又异常了呢!算了catch(...)吧。
但是到处都catch(...)之后也很奇怪,于是你在顶层又catch(...)
然后你发现程序行为变得很诡异,总觉得哪里出错了,但是又不知道究竟是哪里出错,于是你开始注释掉catch(...),让错误在第一时间暴露出来。
最后你发现,转了一圈你又回来了。
这就好比你去餐厅吃个饭,结果发现有的菜没货了你会死,菜上错了你会死,服务员不高兴了你会死,筷子放错方向了你会死,整个供应链无论哪里出个unhandled exception你都会死。。。
【 在 wjhtingerx 的大作中提到: 】
: 这玩意儿把出问题的调用栈都弄没了,反倒不利于调试吧?
--
修改:yuanmo FROM 221.216.117.*
FROM 221.216.117.*