如何在 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 2.0 中的转换错误

如何在 Swift 中正确获取 Do-Catch 范围之外的值(使用 Try)

如何在 Swift 2.0 中使用完成按钮做数字键盘?

如何在 Swift 2.0 中获取错误消息?

swift 2.x 如何使用try catch

如何在 swift 2.0 中使用 AttributesOfFileSystemForpaths 获取总磁盘空间和可用磁盘空间