Objective c @try@catch之间的转换
我很难理解从“尝试”到“抓住”的转变 我知道如果@try块中的语句抛出异常,@catch块将被执行。我不理解包含异常信息的NSException对象如何作为参数传递。我在网上读到的很多关于异常的东西都跳过了这个细节 我书中的例子是Objective c @try@catch之间的转换,objective-c,Objective C,我很难理解从“尝试”到“抓住”的转变 我知道如果@try块中的语句抛出异常,@catch块将被执行。我不理解包含异常信息的NSException对象如何作为参数传递。我在网上读到的很多关于异常的东西都跳过了这个细节 我书中的例子是 @try { [myArray objectAtIndex: 2]; } @catch (NSException *exception){ NSLog(@"Caught %@%@", exception.name, exception.reason)
@try {
[myArray objectAtIndex: 2];
}
@catch (NSException *exception){
NSLog(@"Caught %@%@", exception.name, exception.reason);
}
因此,一旦检测到异常,是否会自动创建异常对象并将其发送到@catch块 Try-and-Catch用于异常处理。每当try块中发生错误时,编译器就会跳转到相应的Catch块并将异常对象传递给它。
我们只需访问exception对象即可了解错误的详细信息。是。发生错误时,将检查callstack生成的语句,以验证是否存在带有“catch”块的“try”语句。当发现异常时,将实例化一个包含执行上下文的异常对象(例如,有关调用堆栈的上下文、线程和有关错误的详细信息),并将该对象作为参数传递给catch块
提示:验证在objective-c中重现异常的最佳实践。在C#中,我知道回收操作
希望有帮助。一旦@catch块捕获到异常,它就会由异常指针创建,并且名称和原因都是创建的异常的一部分。因此,一旦@catch块捕获到异常,就会创建一个指针来引用该异常?确切地说。NSException将其创建为指向异常的指针,并将指针设置为调用的任何类型的异常。NSException存在通用异常,然后NSException可以为通用异常无法处理的异常创建新异常。请澄清流程顺序:1。发生异常(在@try块中)2。创建异常指针是为了引用存储异常名称和原因的异常对象?不要将异常用作可恢复错误。在iOS和OSX应用程序中,越位应被视为致命错误。