在某些情况下,错误作为参数提供而不是抛出。一个示例可以是所Result<T, Error>提供的完成处理程序。我想匹配错误而不抛出它。
通过抛出错误匹配的示例:
enum MyError: Error {
case error
}
func process(error: Error) {
do {
throw error
} catch MyError.error {
print("this is it")
} catch {
print("unknown error")
}
}
process(error: MyError.error)
Run Code Online (Sandbox Code Playgroud)
更新:
即使对于系统提供的错误(例如URLError不是enum类型的错误),匹配也应该有效。
func process(error: Error) {
do {
throw error
} catch URLError.timedOut {
print("this is not it")
} catch URLError.cancelled {
print("this is it")
} catch {
print("unknown error")
}
}
process(error: URLError(.cancelled))
Run Code Online (Sandbox Code Playgroud)
您可以使用if case语法。
在你的例子中,
enum MyError: Error {
case error
}
func process(error: Error) {
if case MyError.error = error {
print("this is it")
} else {
print("unknown error")
}
}
process(error: MyError.error)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |