Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c @try@catch之间的转换_Objective C - Fatal编程技术网

Objective c @try@catch之间的转换

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块中的语句抛出异常,@catch块将被执行。我不理解包含异常信息的NSException对象如何作为参数传递。我在网上读到的很多关于异常的东西都跳过了这个细节

我书中的例子是

@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应用程序中,越位应被视为致命错误。