请考虑以下代码:
enum MyErrorType:ErrorType {
case BadTimes
}
var mightHaveAValue: String?
do {
if let value = mightHaveAValue {
// do stuff with value
} else {
throw MyErrorType.BadTimes
}
// do stuff with NSFileManager using mightHaveAValue which might throw
} catch {
// handle error
}
...在这个例子中,我有一个很大的do/try/catch块。在这个例子中,无论mightHaveAValue
是空的,还是NSFileManager
稍后发生了一些不好的事情,错误处理都是一样的。所以重用错误处理代码是有意义的。
这是Swift 2中最干净的方法吗?还是有什么方法可以在展开一个没有值的可选项时自动抛出/捕获?
2条答案
按热度按时间twh00eeo1#
它看起来不错,但使用
guard let
比if let
更好,因为它允许您在主do
块中使用展开的值,而不必在if let
分支中工作。您还可以使用多个catch
分支来处理不同的错误类型。没有自动的方法来处理展开选项,您必须使用许多已知方法中的一种:
if let
、guard let
、无聚结等。tp5buhyn2#
也许可以使用这样的扩展名🤔