首页 > 代码库 > swif-throws异常抛出
swif-throws异常抛出
import UIKit enum VendingMachineError: Error { case invalidSelection //选择无效 case insufficientFunds(coinsNeeded: Int) //金额不足 case outOfStock //缺货 } struct Item { var price: Int var count: Int } class VendingMachine { var inventory = [ "Candy Bar": Item(price: 12, count: 7), "Chips": Item(price: 10, count: 4), "Pretzels": Item(price: 7, count: 11) ] //货币沉淀 var coinsDeposited = 0 func dispenseSnack(snack: String) { print("Dispensing \(snack)") } func vend(itemNamed name: String) throws { guard let item = inventory[name] else { throw VendingMachineError.invalidSelection } guard item.count > 0 else { throw VendingMachineError.outOfStock } guard item.price <= coinsDeposited else { throw VendingMachineError.insufficientFunds(coinsNeeded: item.price - coinsDeposited) } coinsDeposited -= item.price var newItem = item newItem.count -= 1 inventory[name] = newItem print("Dispensing \(name)") } } class First_Demo3: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.navigationItem.title = "throws异常抛出" self.view.backgroundColor = UIColor.white let vend = VendingMachine() //货币沉淀 vend.coinsDeposited = 5 /* try抓取异常,如果执行成功,那么执行 vend.vend(itemNamed: "Pretzels")。cathch 完枚举的三个错误以后,要把catch关闭,即: 注意:最后加入一个空的catch,否则则会报错 Error throw from are not handled because the enclosing catch is not exhaustive 意思就是catch没有关闭。 */ do { try vend.vend(itemNamed: "Pretzels") // 没有错误抛出 }catch VendingMachineError.invalidSelection{ print("选择无效") // 有错误抛出 }catch VendingMachineError.outOfStock{ print("缺货") }catch VendingMachineError.insufficientFunds(let coinsNeeded){ print("还差\(coinsNeeded)货币") }catch { } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
swif-throws异常抛出
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。