Sve*_*ven 5 cocoa exception-handling exception objective-c
Cocoa异常策略背后的基本原理是什么 - 或者为什么仅为程序员错误使用异常?
我知道异常过去相当昂贵,所以人们不想过度使用它们.但随着现代运行时的变化而变化,这是零成本的例外.我也明白使用异常来做一般控制流并不是一个好主意,因为它可能会导致代码难以理解.
但为什么要使用异常来发出程序员错误的信号呢?对于那种情况,记录后面的消息abort()就足够了.我为什么要编写一个@catch(...)块来处理程序员错误而不是修复实际错误?我一直在考虑这个问题,而且我没有找到任何合理使用程序员错误的异常.
(作为旁注/问题:我编写了一个递归下降解析器,我正计划在那里使用异常来处理错误.对我来说似乎比在那里为每个函数添加一个out参数更合理.并在任何地方手动检查错误.当然,我会抓住任何异常,我会抛出从外部调用的顶级方法.有人认为这对异常有用吗?)
谢谢你到目前为止的所有答案.他们都是真的,但他们实际上并没有回答我的问题.所以我想我并不是很清楚,对不起.所以这是真正的问题:
为什么Cocoa会抛出程序员错误(或断言)的异常?一个人不应该抓住它们,并且实际上编写在调用堆栈中某处处理程序员错误的代码无论如何都不是一个好主意.在我看来,例外是浪费精力.只需记录错误和调用abort()(退出程序)就足够了.那么实际抛出异常的优点是什么?
我理解为什么通常不使用和不鼓励异常--Cocoa的大多数部分都不是例外安全的.这不是问题.我希望我现在明白这一点.
你的问题明确假设“一个人不应该抓住他们。” 这是不正确的。在正常情况下,程序员不会被期望捕获它们,但这并不是说它们绝不能出于任何目的而被捕获。
\n\n示例:我不确定它是否会再起作用,因为现在 bug 少多了,但我知道至少曾经是这样的情况,Xcode 会捕获异常并弹出一个对话框,说:“这样,并且-发生了这样的事情。这似乎不是一个严重的问题,但你可能应该保存并重新启动程序,以避免将来出现任何麻烦。”
\n| 归档时间: |
|
| 查看次数: |
447 次 |
| 最近记录: |