异常处理(EH)似乎是当前的标准,通过搜索网络,我找不到任何新的想法或方法来改进或取代它(好吧,存在一些变化,但没有什么新奇的)。
尽管大多数人似乎忽略了它或只是接受它,EH 有有一些巨大的缺点:异常对代码是不可见的,它创建了许多许多可能的退出点。Joel在软件上写了一个关于它的文章。与goto
的比较非常合适,它让我再次思考EH。
我尽量避免EH,只使用返回值,回调或任何符合目的的东西。但是当你必须编写可靠的代码时,你不能忽视EH:它以new
开始,它可能会抛出异常,而不是只返回0(像以前一样)。这使得c++代码脆弱的中的任何一行都成为异常。然后在c++基本代码中抛出异常的地方更多……STD lib可以这样做,等等。
这感觉像走在摇摇欲坠的地上..因此,现在我们不得不关注异常!
但这很难,真的很难。你必须学会编写异常安全的代码,即使你有一些这方面的经验,仍然需要仔细检查每一行代码的安全性!或者您开始到处放置try/catch块,这会使代码变得混乱,直到达到不可读的状态。
嗯取代旧的清洁deterministical方法(返回值. .),有几个但理解和容易solveable缺点的方法在代码中创建了许多可能的退出点,如果你开始编写代码捕获异常(你被迫做什么在某种程度上),那么它甚至创造了众多的路径通过代码(代码捕获块,想想一个服务器程序,您需要日志设施除了std:: cerr . .)。EH有优势,但这不是重点。
我真正的问题是: