从这里抛出的错误不会在Swift 2.0中处理

在我更新swift 2.0后,我得到了一个错误{try} 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 } 

除了处理错误types,你知道你的函数可以抛出,你需要处理你不知道的通用catch块的错误types。 只要使用额外的catch块并打印一些广义的错误信息给用户。

看我的自定义error handling代码。 在这里,我已经创build了一个函数,它会打印一个数字,如果它是奇数,小于100.我已经处理了两种types的错误:Even和tooBig,为此我创build了一个types为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)") } 

error handling代码是:

  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块是处理未知的错误。

干杯!