故事板实例化未在失败时返回异常

时间:2015-11-06 19:23:56

标签: swift

我正在尝试以编程方式创建并返回 Storyboard ,同时防止崩溃根据UIStoryboard上的Apple文档检查异常。

如果提到的故事板不存在,则此方法应返回异常:

init(name name: String,
   bundle storyboardBundleOrNil: NSBundle?)

现在提出以下代码:

do {
    let storyboard = try UIStoryboard(name: "tester", bundle: nil)
} catch {
    // Do something
}
预编译器正在满足do-catch子句中的

,并发出以下警告:

  

'catch'块无法访问,因为'do'中没有抛出任何错误   块

这可能是个错误吗?

编辑:2015/11/19 在向苹果公司发送关于它的雷达之后,他们回答了这个问题已知并且我的报告与开放式报告重复的事实。

1 个答案:

答案 0 :(得分:-1)

UIStoryboard初始值设定项未标记 throws ,因此您无需将其放在do-try-catch块中

init(name name: String,
   bundle storyboardBundleOrNil: NSBundle?)

就足以将您的代码更改为

let storyboard = UIStoryboard(name: "tester", bundle: nil)

请注意,do-try-catch仅捕获错误,而不捕获NSException

您可以阅读更多相关信息here

如果您仍想尝试捕获NSException,那么您可以看到以下答案:Catching NSException in Swift