我尝试了解新的错误处理迅速2的东西。下面是我所做的: 我首先声明了一个错误枚举:
enum SandwichError: ErrorType {
case NotMe
case DoItYourself
}
然后我声明了一个抛出错误的方法(不是异常)。这是一个错误。).方法如下:
func makeMeSandwich(names: [String: String]) throws -> String {
guard let sandwich = names["sandwich"] else {
throw SandwichError.NotMe
}
return sandwich
}
问题出在调用方。下面是调用此方法的代码:
let kitchen = ["sandwich": "ready", "breakfeast": "not ready"]
do {
let sandwich = try makeMeSandwich(kitchen)
print("i eat it \(sandwich)")
} catch SandwichError.NotMe {
print("Not me error")
} catch SandwichError.DoItYourself {
print("do it error")
}
在 do
行编译器说 Errors thrown from here are not handled because the enclosing catch is not exhaustive
之后。但在我看来,这是详尽的,因为只有两个情况下,在 SandwichError
枚举。
对于经常切换语句迅速可以理解它是详尽的时候,每个案件处理。