异常处理(EH)似乎是当前的标准,并且通过搜索网络,我找不到任何试图改进或替换它的新颖想法或方法(好吧,存在一些变化,但没有新颖的).
虽然大多数人似乎忽略它或只是接受它,但EH 有一些巨大的缺点:代码看不到异常,它会创建许多可能的退出点.乔尔在软件上写了一篇关于它的文章.比较goto完美,它让我再次思考EH.
我尽量避免使用EH,只使用返回值,回调或任何适合目的的东西.但是当你必须编写可靠的代码时,你现在就无法忽略EH:它从new可能抛出异常开始,而不是仅仅返回0(就像过去一样).这使得任何C++代码行都容易受到异常的影响.然后C++基础代码中的更多地方抛出异常...... std lib执行它,依此类推.
这感觉就像走在摇摇欲坠的地面上.所以,现在我们被迫关注异常!
但它很难,真的很难.你必须学会编写异常安全代码,即使你有一些经验,它仍然需要仔细检查任何一行代码是安全的!或者你开始在任何地方放置try/catch块,这会使代码混乱,直到它达到不可读状态.
EH取代了旧的干净确定性方法(返回值..),它只有一些但可以理解且易于解决的缺点,在您的代码中创建许多可能的退出点的方法,以及如果您开始编写捕获异常的代码(您是什么的)在某些时候被迫做某事),然后它甚至通过你的代码创建了许多路径(catch块中的代码,考虑一个服务器程序,你需要除了std :: cerr之外的日志工具..).EH有优势,但这不是重点.
我的实际问题: