如果操作失败并引发异常,例如:
@try{ // code fails and raises an exception
if (!objectNotInMemory)
{
@throw exc; // presuming you already initialized NSException* exc
}
}
@catch (NSException* e){ // deal with exception exc
if ([[e reason] isEqualToString:@"Object not in memory"])
UIAlertView* alert = [UIAlertView initWith...];
}
引发该异常的事物(在这种情况下,objectNotInMemory 不存在、nil 或 0)具有@throw{}
创建或传递某种 NSException 对象或消息的指令。然后可以在@catch{}
块中捕获此异常对象,或者如果忽略,将警告操作系统关闭应用程序进程。
必须抛出异常才能被捕获。
更多阅读 Apple 文档(您应该对此感到满意):
@try — 定义作为异常处理域的代码块:可能引发异常的代码。
@catch() — 定义一个块,其中包含用于处理 @try 块中抛出的异常的代码。@catch 的参数是本地抛出的异常对象;这通常是一个 NSException 对象,但也可以是其他类型的对象,例如 NSString 对象。
@finally — 定义一个相关代码块,无论是否抛出异常,该代码块随后都会被执行。
@throw — 抛出异常;该指令在行为上与 NSException 的 raise 方法几乎相同。您通常会抛出 NSException 对象,但不限于它们。有关@throw 的更多信息,请参阅“抛出异常”。</p>