ios - 如何在 iOS 中捕获此异常?

标签 ios exception crash uiimagepickercontroller

这是我的代码的一部分:

self.rearPicker = [[UIImagePickerController alloc] init];
self.rearPicker.delegate = self;
self.rearPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.rearPicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self.rearPicker.showsCameraControls = NO;
dispatch_async(dispatch_get_main_queue(), ^{
[self presentViewController:self.rearPicker animated:YES completion:^{
    // send log to my server.And log's success in sending shows that  everything goes pretty well until this line.
    @try {
    // I think it's this line of code that causes crash on some device. What else can I do to avoid crashes besides @try-@catch.
    [self.rearPicker performSelector:@selector(takePicture) withObject:nil afterDelay:3.f];
    }
    @catch (NSException *exception) {
      [self dismissViewControllerAnimated:YES completion:nil];
    }
    @finally {
         // do nothing for now
    }

   }];
});

//根据我的登录服务器和崩溃日志,在某些设备上我的应用程序可以正常执行
[self.rearPicker performSelector:@selector(takePicture) withObject:nil afterDelay:3.f];

//但在此之后在某处坠毁。崩溃日志有以下两种:
  • *** setObjectForKey: 对象不能为 nil (key: UIImagePickerControllerOriginalImage)
  • *** 相机:查找 mogul 的捕获设备格式时出错

  • //我真的很困惑。我怎样才能捕捉到这两个异常?谢谢你的耐心和善意!

    最佳答案

    在@try 中,您所做的只是调度稍后发生的事情。 @try 不包含稍后发生的事情,只包含执行它的请求。

    相反,您应该分派(dispatch)到您自己的方法,然后在该方法中直接在问题调用(takePicture)周围添加异常处理。请注意,如果该调用执行任何异步操作,那么您将遇到类似的问题。

    一般来说,最好添加断点并找出问题的原因,这样您就可以添加检查来避免这种情况,而不是在它发生后尝试处理它。

    关于ios - 如何在 iOS 中捕获此异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33365922/

    相关文章:

    java - 父进程被运行 java jar 的子 cmd.exe 进程意外杀死 - WINDOWS 7 问题 - C++

    ios - -[__NSCFString countByEnumerateWithState :objects:count:]: unrecognized selector sent to instance

    ios - 在 Swift iOS 中创建输入管道时应用程序崩溃(信号 13)

    ios - 如何在 IB 中使用带有 XIB 的 UIContainerView?

    c - 为什么调用 _ UnhandledExceptionFilter 而不是被 catch(...)

    c# - 如何修复 "' System.AggregateException' 出现在 mscorlib.dll 中”

    java - 尝试在空对象引用上调用接口(interface)方法 'boolean java.util.Set.addAll(java.util.Collection)'

    ios - AF网络 2 : canceling batch requests

    ios - UIBezierPath Init() 不期望 byRoundingCorners 参数

    ios - 如何做潜望镜红心跳出来的动画?