如何在 swift 2.0 中使用 catch 概念
Posted
技术标签:
【中文标题】如何在 swift 2.0 中使用 catch 概念【英文标题】:how to avail the catch concept in swift 2.0 【发布时间】:2016-01-07 10:24:43 【问题描述】:我刚刚将我的代码转换为 Swift 2.0,它完美地转换了代码。
只有一件事我无法理解如何在我的代码中使用 try-catch。
我正在发布数据并获取 JSON 格式
如果网络出现任何问题,则在 JSON 序列化完成时会引发错误并导致应用程序崩溃。如何防止这种情况,我的代码快照如下。
do
json = try! NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary
catch
// report error
它在行中崩溃了
json = try! NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary
如何使用catch,让它不会在这里崩溃并显示错误!!!
【问题讨论】:
只是尝试而不是尝试! , 尝试!如果错误意味着崩溃,尝试意味着如果错误去捕获。您必须将错误变量声明为 NSError 才能捕获错误:catch let error as NSError Error-Handling in Swift-Language的可能重复 【参考方案1】:我在我的项目中使用它
do
if let result = try NSJSONSerialization.JSONObjectWithData(resultData, options: []) as? NSMutableDictionary
catch let error as NSError
print("Error : \(error)")
【讨论】:
【参考方案2】:使用此语法,并删除“!”在尝试中
do
json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary
catch _
// report error
print("Exception")
【讨论】:
最好打印实际的错误消息而不是“异常”。 :) 是的,这是真的。我唯一的我想成为一个例子。【参考方案3】:就像 diego 说的,但是 catch 这样做是为了看看你得到的错误是什么,以防你得到一个用于调试的错误
catch let error as NSError
print("Error : \(error)")
//or NSLog()
NSLog("Error = %@",error)
【讨论】:
以上是关于如何在 swift 2.0 中使用 catch 概念的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中正确获取 Do-Catch 范围之外的值(使用 Try)
如何在 swift 2.0 中使用 AttributesOfFileSystemForpaths 获取总磁盘空间和可用磁盘空间