iphone:try-end-try

iphone:try-end-try,iphone,objective-c,Iphone,Objective C,objective-C中是否有任何方法可以查看是否可以在不导致应用程序崩溃的情况下执行特定任务 其他语言,如javascript,也有 try { //Run some code here } catch(err) { //Handle errors here } Objective-C中有什么东西吗? 如果是,语法是什么 谢谢。看看: 也值得一看:虽然费利克斯的答案在技术上是正确的,但这并不是全部 在iOS和Mac OS X上,异常用于指示不可恢复的程序错误。异常不

objective-C中是否有任何方法可以查看是否可以在不导致应用程序崩溃的情况下执行特定任务

其他语言,如javascript,也有

try
  {
  //Run some code here
  }
catch(err)
  {
  //Handle errors here
  }
Objective-C中有什么东西吗? 如果是,语法是什么

谢谢。

看看:



也值得一看:

虽然费利克斯的答案在技术上是正确的,但这并不是全部

在iOS和Mac OS X上,异常用于指示不可恢复的程序错误。异常不用于指示用户错误或可恢复错误,如Java上的错误


任何通过系统框架代码的异常都将使该框架处于未定义状态。。捕获上述异常并尝试从中恢复将导致内存泄漏、未定义的行为和崩溃。

真正的问题是,在错误捕获块中,您试图做什么


有不同的方法可以钩住不同种类的错误。您希望在这样的块中包装什么样的代码?

不要这样做。异常是iOS上的硬错误,不能从中恢复。@bbum:不是您可能抛出的自定义异常。但我同意,对于一般的错误处理,这个文档可能更好:甚至是自定义异常。如果这些异常通过任何系统代码框架,则行为未定义。流控制的异常只有在与框架代码100%隔离的情况下才是安全的。@bbum,这太旧了,但我读了你的评论(第一条),有一个词是“mesntto”。。。这是什么意思?我在谷歌上搜索过,但没有结果。请告诉我。@hagile:它可能是“本意”的意思。所以,不可能存在任何可以像Javascript和其他语言那样使用的东西了?不。使用的设计模式是,异常是不可恢复的错误。如果异常是不可恢复的错误,为什么语法中包含捕获和恢复异常的方法,或者在抛出异常时执行代码的方法,与其简单地调用已安装的NSExceptionHandler并强制终止,还不如仅仅因为语言具有支持某些内容的语法,这并不意味着框架也被设计为支持这些内容。这些框架有一个非常严格的政策:异常是不可恢复的错误。尝试捕获和恢复违背了框架设计,而且很明显,“跳过”基于框架的堆栈框架的异常违反了已记录的策略,并将产生未指定的行为。
Cup *cup = [[Cup alloc] init];

@try {
    [cup fill];
}
@catch (NSException *exception) {
    NSLog(@"main: Caught %@: %@", [exception name], [exception reason]);
}
@finally {
    [cup release];
}