从没有抛出的继承函数中抛出异常

时间:2016-02-28 13:29:34

标签: swift exception-handling

我正在尝试执行以下操作:

protocol X{
    func foo()
}
enum XError{
    case BAR
}
class Y:X{
    func foo(){
        throw XError.BAR
    }
}

我不能在协议中添加一个throws声明,它抱怨

  

未处理错误,因为封闭功能不是   宣布'抛出'。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:10)

您需要在抛出任何函数的签名中显式添加throw。

所以

func foo() throws {
    throw XError.BAR
}

这也适用于协议定义。

protocol X {
    func foo() throws
}

Swift中的错误应符合Error协议。

enum XError: Error {
    case BAR
}