在我更新了swift 2.0之后,我得到了一个关于do { try } catch like a image的错误。
我该如何解决这个问题呢?谢谢!
发布于 2015-09-19 05:20:05
该错误告诉您封闭的catch不是详尽的。这是因为自动生成的catch
块只捕获NSError
对象,而编译器无法判断是否会抛出其他ErrorType
。
如果您确定不会抛出其他错误,则可以添加另一个默认catch块:
do {
objects = try managedObjectContext?.executeFetchRequest(request)
} catch let error1 as NSError {
error = error1
objects = nil
} catch {
// Catch any other errors
}
发布于 2016-05-07 19:07:08
除了处理函数可以抛出的错误类型外,还需要使用通用catch块来处理不知道的错误类型。只需使用额外的catch块,并将一些通用的错误消息打印给用户。
请参阅我的自定义错误处理代码。在这里,我创建了一个函数,如果数字是奇数且小于100,它将打印该数字。我处理过两种类型的错误: Even和tooBig,为此我创建了一个ErrorType类型的枚举。
enum InvalidNumberError : ErrorType{
case even
case tooBig
}
//MARK: this function will print a number if it is less than 100 and odd
func printSmallNumber(x :Int) throws{
if x % 2 == 0 {
throw InvalidNumberError.even
}
else if x > 100 {
throw InvalidNumberError.tooBig
}
print("number is \(x)")
}
错误处理代码为:
do{
try printSmallNumber(67)
}catch InvalidNumberError.even{
print("Number is Even")
}catch InvalidNumberError.tooBig{
print("Number is greater tha 100")
}catch{
print("some error")
}
最后一个catch块用于处理未知错误。
干杯!
https://stackoverflow.com/questions/32650050
复制相似问题