Objective-C中的Try-Catch等价物

IIS*_*ite 9 objective-c

我在我的应用程序中的main.m中遇到应用程序崩溃,并且不知道为什么错误发生,因为xcode没有显示崩溃发生的地方,它显示它在返回时崩溃UIApplicationMain(argc,argv ...)这什么都没告诉我.

有没有办法在Objective-C中使用C++中的try/catch来查看错误发生的确切位置?

das*_*ght 13

尽管Objective-C确实有@try/ @catch,但它对你没什么帮助.到达时@catch,发生错误的堆栈帧将消失.

您需要的是设置一个断开异常断点:打开Breakpoint Navigator页面(右起第二个按钮),然后单击导航器页面底部的[+].选择"添加异常断点...",然后单击[完成].

现在,每当程序抛出异常时,程序就会在调试器中中断.

  • 将它添加到`@ catch`:`NSLog(@"Stack trace:%@",[exception callStackSymbols]);` (2认同)

Sri*_*nth 8

在此输入图像描述 在此输入图像描述

我在下面给出了try catch语法,但除此之外,你可以做的是,在Xcode中,你可以设置断点.在项目资源管理器的左侧,单击"断点"选项卡.在左下角,你会发现一个+.(上图)点击它,它会给你一个设置异常断点的选项.这将做的是它将停在任何发生崩溃的线路上.你不需要在每个地方设置try catch语句.

@try {

    // Your statements here
 }
 @catch (NSException * e) {
    NSLog(@"Exception: %@", e);
 }
 @finally {
    NSLog(@"finally");
 }
Run Code Online (Sandbox Code Playgroud)