zoukankan      html  css  js  c++  java
  • 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.
        }
        
    }
    
     
  • 相关阅读:
    触发器
    数据库一键退出脚本
    集合
    Android 自定义控件之继承ViewGroup创建新容器
    web学习测试环境
    ref:ubuntu下如何批量修改文件后缀名
    ref:Adding AFL Bloom Filter to Domato for Fun
    ref:phpstorm配置远程调试(xdebug)(docker中)
    ref:PHP反序列化漏洞成因及漏洞挖掘技巧与案例
    ref:【干货分享】PHP漏洞挖掘——进阶篇
  • 原文地址:https://www.cnblogs.com/sayimba/p/6237235.html
Copyright © 2011-2022 走看看