我正在尝试以编程方式创建并返回 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 在向苹果公司发送关于它的雷达之后,他们回答了这个问题已知并且我的报告与开放式报告重复的事实。
答案 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