【发布时间】:2016-04-26 10:48:54
【问题描述】:
几天前我刚刚开始学习 Swift。在我的 Xcode 游乐场中,我有以下代码:
//: Playground - noun: a place where people can play
import UIKit
enum VendingMachineError: ErrorType {
case InvalidSelection
case InsufficientFunds(coinsNeeded: Int)
case OutOfStock
}
func requestBeverage(code: Int, coins: Int) throws {
guard code > 0 else {
throw VendingMachineError.InvalidSelection
}
if coins < 2 {
throw VendingMachineError.InsufficientFunds(coinsNeeded: 3)
}
guard coins > 10 else {
throw VendingMachineError.OutOfStock
}
print("everything went ok")
}
try requestBeverage(-1, coins: 4)
print("finished...")
如果我尝试运行它,什么也不会发生。但我希望打印“完成...”,因为在我的逻辑中,它尝试做某事,失败,然后程序将继续......
所以问题是,为什么程序没有继续,以及如何用尽可能少的单词告诉代码在出错的情况下继续?
提前致谢
【问题讨论】:
-
是否打印了“一切正常”?
-
你确定是 Swift 3 吗?据我所知,Swift 3 甚至还没有处于测试阶段(它将在 WWDC 2016 之后,并且可能会在 9 月左右发布)。最有可能是 Swift 2.2(当前版本)。
-
苹果什么时候发布了swift 3.0?我错过了那个版本吗?请澄清我的疑问。
-
我明白了。我收到了 ++ deprecation 错误,所以我认为它是 3.0。但我认为你是对的。
-
@OWADVL 弃用意味着计划在未来版本(在本例中为 Swift 3.0)中删除某些内容,但在当前版本(Swift 2.2)中仍然可以正常工作。编译器只是警告你,你应该准备好你的代码 Swift 3.0(这样你就不会在它发布时处理大量突然的错误)。
标签: swift try-catch swift-playground swift2.2