美文网首页iOS-Swift
Swift_do{}catch{}

Swift_do{}catch{}

作者: figure_ai | 来源:发表于2016-12-09 17:40 被阅读58次

    OC中一般情况如果发生错误会给传入的指针赋值,而在Swift中使用的是异常处理机制。

    • 但凡有throw方法的都要进行try处理,而进行try处理就要写上do{}catch{}


      throw方法.png
    • 示例代码

    /*
    1.do{}catch{}, 只有do中的代码发生了错误, 才会执行catch{}中的代码
     2. try  正常处理异常, 也就是通过do catch来处理
         try! 告诉系统一定不会有异常, 也就是说可以不通过 do catch来处理
    但是需要注意, 开发中不推荐这样写, 一旦发生异常程序就会崩溃,如果没有异常那么会返回一个确定的值给我们
          try? 告诉系统可能有错也可能没错, 如果没有系统会自动将结果包装成一个可选类型给我们, 如果有错系统会返回nil, 如果使用try? 那么可以不通过do catch来处理
                */
     do {
                 //解析二进制数据
                let objcs = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! [[String : AnyObject]]
                for dict in objcs {
                    let chilControllerName = dict["vcName"] as? String
                    let title = dict["title"] as? String
                    let imageName = dict["imageName"] as? String
                    addChildViewController(chilControllerName, title: title, imageName: imageName)
                    
                }
            
            }catch {
                //如果do里边的代码发生错误,比如,解析不了数据,就会执行catch里边的代码
                addChildViewController("HomeTableViewController", title: "首页", imageName: "tabbar_home")
                addChildViewController("MessageTableViewController", title: "消息", imageName: "tabbar_message_center")
                addChildViewController("DiscoverTableViewController", title: "发现", imageName: "tabbar_discover")
                addChildViewController("ProfileTableViewController", title: "我", imageName: "tabbar_profile")
            }
    

    注:do{}catch{}两个间的代码只能执行一个。

    相关文章

      网友评论

        本文标题:Swift_do{}catch{}

        本文链接:https://www.haomeiwen.com/subject/vnxymttx.html