Swift 2: 从类型的抛出函数到非抛出函数的无效转换
Swift 2: Invalid conversion from throwing function of type to non-throwing function
我将一些(丑陋的)自写代码移植到 Swift2 并在 lambda 函数中收到此错误消息:
我不明白的是,我用错误抛出函数 JSONObjectWithData 处理了整个代码并捕获了错误。我在代码中什么也没扔。尽管如此,编译器意味着我抛出了一个错误。
我需要了解这种行为。请善待,因为我知道我必须改进我的代码才能充分利用 swift2 中新的错误处理概念。
非常感谢您。
这很快。在这篇文章的帮助下,我找到了解决我的问题的方法:
http://www.hackingwithswift.com/new-syntax-swift-2-error-handling-try-catch
你必须在代码末尾放置一个通用的 catch 子句,因为仅捕获 NSError 是不够的。
catch let error as NSError
{
failure(error: error)
return
}
// this is important -->
catch
{
}
我认为最好的方法是更改您的失败函数签名以采用 ErrorType
。那么就
catch let error {
failure(error: error)
}
会做。
我将一些(丑陋的)自写代码移植到 Swift2 并在 lambda 函数中收到此错误消息:
我不明白的是,我用错误抛出函数 JSONObjectWithData 处理了整个代码并捕获了错误。我在代码中什么也没扔。尽管如此,编译器意味着我抛出了一个错误。
我需要了解这种行为。请善待,因为我知道我必须改进我的代码才能充分利用 swift2 中新的错误处理概念。
非常感谢您。
这很快。在这篇文章的帮助下,我找到了解决我的问题的方法:
http://www.hackingwithswift.com/new-syntax-swift-2-error-handling-try-catch
你必须在代码末尾放置一个通用的 catch 子句,因为仅捕获 NSError 是不够的。
catch let error as NSError
{
failure(error: error)
return
}
// this is important -->
catch
{
}
我认为最好的方法是更改您的失败函数签名以采用 ErrorType
。那么就
catch let error {
failure(error: error)
}
会做。