为什么函数不抛出就满足抛出要求?

时间:2018-12-05 22:09:11

标签: swift protocols swift-protocols throw

protocol Throwing {
    func x() throws
}


class C : Throwing{
    func x(){
        print("not throwing") // no errors!
    }
}

为什么编译器没有抛出任何错误?这是设计使然还是错误?

1 个答案:

答案 0 :(得分:3)

出于同一原因进行编译:

class A {
    func x() throws {}
}
class B:A {
    override func x() {}
}

这:

func f() {}
func yoho (_ f : () throws -> Void) {}
override func viewDidLoad() {
    yoho(f)
}

这:

func f() {}
var fun : (() throws -> Void)!
override func viewDidLoad() {
    self.fun = f
}