Swift捕获不同的错误类型
示例
让我们为该示例创建我们自己的错误类型。
2.2enum CustomError: ErrorType {
case SomeError
case AnotherError
}
func throwing() throws {
throw CustomError.SomeError
}
3.0enum CustomError: Error {
case someError
case anotherError
}
func throwing() throws {
throw CustomError.someError
}
Do-Catch语法允许捕获引发的错误,并自动error在catch块中创建一个可用的常量名称:
do {
try throwing()
} catch {
print(error)
}
您还可以自己声明一个变量:
do {
try throwing()
} catch let oops {
print(oops)
}
也可以链接不同的catch语句。如果可以在Do块中引发几种类型的错误,这将很方便。
在这里,Do-Catch首先将尝试将错误转换为CustomError,然后将其视为NSError自定义类型不匹配的错误。
2.2do {
try somethingMayThrow()
} catch let custom as CustomError {
print(custom)
} catch let error as NSError {
print(error)
}