Swift_do{}catch{}
2016-12-09 本文已影响58人
figure_ai
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{}两个间的代码只能执行一个。