swift 2中的异步错误处理

mus*_*afa 6 swift

所以我在swift 2中尝试了错误处理的事情.但是我不确定的一件事是如何让它适用于异步回调函数.假设我从后端加载资源.我定义了我的错误类型,如下所示:

enum NetworkError: ErrorType {
    case NoConnection
    case InvalidJSON
    case NoSuccessCode(code: Int)
}
Run Code Online (Sandbox Code Playgroud)

我打算在出现问题时抛出其中一个案例.这是进行网络呼叫的功能:

func loadRequest<T: Decodable>(request: NSURLRequest, callback:T -> Void) throws {
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithRequest(request) { data, response, error in
        // Other code that parses json and at somewhere it throws
        throw NetworkError.NoConnection
    }
}
Run Code Online (Sandbox Code Playgroud)

但这里编译器给出错误:

无法dataTaskWithRequest使用类型的参数列表 调用(NSURLRequest, (_,_,_) throws) -> Void)

从这里可以看出,相同的闭包类型在声明时被视为不同的类型throws.

那么这种尝试捕获的东西在这些情况下是如何工作的呢?

Lau*_*ent 0

NSURLSession.h 中似乎没有任何内容抛出异常。所以我想知道该类是否已转换为使用此新功能。