ios - 如果 block 内发生异常会怎样?

标签 ios objective-c macos exception objective-c-blocks

我只是想了解如果 block 内发生异常会发生什么情况?当它在单独的线程上运行时,它将被抛出到哪里。

还有人可以建议我更好地实现以下两个选项吗?

@try{

[self performBlock^{
some code 
}];

}
@catch (NSException*e) {
}

[self performBlock^{
@try{
some code 
}
@catch (NSException*e) {
}
}];

最佳答案

对于 #2,它显然捕获了代码中的异常。

对于 #1,这取决于此 performBlock: 方法的作用。 Try block 捕获发生在堆栈下方的异常,即同步函数调用。因此,如果 performBlock: 同步调用它的 block ,那里的异常将被 try block 捕获。但是如果是异步调用,那么那里的异常就不会被try block 捕获,因为执行 block 时,try block 不在栈中。

关于ios - 如果 block 内发生异常会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25376680/

相关文章:

ios - MKStoreKit 的通知

ios - 这个应用程序使用什么类型的 View Controller ?

ios - 使用相同 xib 的多个 UITableViewCell 子类?

ios - 从我的数组中检索字符串时出错

ios - 如何在 ios 中的 UIAlertView 上显示所有带有普通字体的按钮文本

c++ - 如何在 OSX 中打印 .so 文件的符号列表?

ios - 检查是否在核心数据中设置了属性?

ruby-on-rails - 无法在Mac OS Catalina上安装Rails

macos - 在 Emacs 迷你缓冲区中访问 OS X/UNIX 环境变量

ios - 如何检测表格 View 行标签上的点击?