在 Apple 的并发编程指南中,NSOperation 子类示例(非并发和并发品种)使用异常处理,我想知道为什么他们在操作中鼓励这种风格。
清单 2-4 响应取消请求
- (void)main {
@try {
BOOL isDone = NO;
while (![self isCancelled] && !isDone) {
// Do some work and set isDone to YES when finished
}
}
@catch(...) {
// Do not rethrow exceptions.
}
}
我的理解是,异常处理通常不是 Objective-C 代码中的常见做法——异常本质上是程序员错误,应该导致应用程序崩溃,而意外输入最好由 NSError 处理。(我可能误解的理解来自这样的事情和这个)
我想知道 NSOperations 是否存在异常处理很重要的特定情况,或者这是否是该指南特定作者的首选风格。
附带说明一下,一些 NSOperation 示例代码遵循这种风格,而其他示例则没有。大多数高可见性 OSS 不使用异常(例如 AFNetworking)。