我有一些(丑陋的)自编代码,已经转换为Swift2,并在lambda函数中收到了以下错误信息:
我不明白的是,我使用错误抛出函数JSONObjectWithData处理整个代码并捕获错误,代码中没有任何抛出。尽管如此,编译器认为我正在抛出一个错误。
我需要理解这种行为。请友好一点,因为我知道我必须改进我的代码才能充分利用Swift2中的新错误处理概念。
非常感谢您提前的帮助。
很快就解决了我的问题。在这篇文章的帮助下,我找到了解决方案:
http://www.hackingwithswift.com/new-syntax-swift-2-error-handling-try-catch
由于单独使用NSError的catch是不够的,所以你必须在代码末尾放置一个通用的catch子句。
catch let error as NSError
{
failure(error: error)
return
}
// this is important -->
catch
{
}
我认为向前迈进的最好方式是将您的失败函数签名更改为接受ErrorType
参数。然后只需要
catch let error {
failure(error: error)
}
catch
设置为穷尽的,而在Swift 1 / 1.2中我们甚至没有try
和catch
? - rb612