ios – 使用swift进行异常处理

前端之家收集整理的这篇文章主要介绍了ios – 使用swift进行异常处理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对 Swift中的异常处理有疑问.
UIStoryboard类的UIKit文档声明了instantiateViewControllerWithIdentifier(identifier:String) – >如果标识符为nil或故事板中不存在,则UIViewController函数将抛出异常.但是,如果我像下面这样使用do / try / catch,我会收到一条警告“在’try’表达式中没有调用抛出函数.”

这只是一个警告,所以我认为这是一个智能问题;但是当我运行以下代码并故意使用无效标识符时,不会捕获异常并生成SIGABRT.

let storyboard = UIStoryboard.init(name: "Main",bundle: nil)
    do {
        let controller = try storyboard.instantiateViewControllerWithIdentifier("SearchPopup")

        // This code is only included for completeness...
        controller.modalPresentationStyle = .Popover
        if let secPopoverPresentationController = controller.popoverPresentationController {
            secPopoverPresentationController.sourceView = self.view
            secPopoverPresentationController.permittedArrowDirections = .Any
            secPopoverPresentationController.barButtonItem = self.bSearchButton
        }
        self.presentViewController(controller,animated: true,completion: nil)
        // End code included for completeness.
    }
    catch {
        NSLog( "Exception thrown instantiating view controller." );
        return;
    }

你应该怎么做/ try / catch来抛出像这样的异常的函数

提前致谢.

布赖恩

解决方法

instantiateViewControllerWithIdentifier不是投掷功能,你不能使用do … try … catch来处理它.如果故事板中没有视图控制器,则无法执行任何操作.这是程序员的错误,创建它的人应该处理这些问题.你不能因为这种错误而责怪iOS运行时.
原文链接:https://www.f2er.com/iOS/328506.html

猜你在找的iOS相关文章