如何处理 MKDirections 请求的错误
How to handler an error of MKDirectionsRequest
我对错误处理不是很熟悉,因此非常感谢任何建议。
我的代码多次调用 Apple API 来计算路线,因为它需要为多个选项计算距离。
do {
directions.calculate(completionHandler: {(response, error) in
let response = (response?.routes)! //This line bugs out
for route in response {
//code
completion(result, error)
}
})
}
catch {
print(error.localizedDescription)
}
第5次或第6次容易崩溃,想知道有没有办法阻止应用程序崩溃并通知。
谢谢
使用 do-catch
块没有意义,因为您的代码中没有 throwable
函数,所以您将无法捕获任何错误。在 Swift 中,您只能捕获标记为 throws
的函数抛出的错误,所有其他错误都无法恢复。
您应该安全地解包可选 response
,因为它可能是 nil
,在这种情况下,强制解包会导致您已经遇到的不可恢复的运行时错误。
您可以使用 guard
语句和可选绑定来安全地解包可选 response
并提前退出,以防没有 response
.
directions.calculate(completionHandler: {(response, error) in
guard let response = response, error == nil else {
completion(nil,error)
return
}
for route in response.routes {
....
completion(result, nil)
}
})
我对错误处理不是很熟悉,因此非常感谢任何建议。
我的代码多次调用 Apple API 来计算路线,因为它需要为多个选项计算距离。
do {
directions.calculate(completionHandler: {(response, error) in
let response = (response?.routes)! //This line bugs out
for route in response {
//code
completion(result, error)
}
})
}
catch {
print(error.localizedDescription)
}
第5次或第6次容易崩溃,想知道有没有办法阻止应用程序崩溃并通知。
谢谢
使用 do-catch
块没有意义,因为您的代码中没有 throwable
函数,所以您将无法捕获任何错误。在 Swift 中,您只能捕获标记为 throws
的函数抛出的错误,所有其他错误都无法恢复。
您应该安全地解包可选 response
,因为它可能是 nil
,在这种情况下,强制解包会导致您已经遇到的不可恢复的运行时错误。
您可以使用 guard
语句和可选绑定来安全地解包可选 response
并提前退出,以防没有 response
.
directions.calculate(completionHandler: {(response, error) in
guard let response = response, error == nil else {
completion(nil,error)
return
}
for route in response.routes {
....
completion(result, nil)
}
})