Vì vậy, tôi đã thử xử lý lỗi trong điều 2. Nhưng một điều mà tôi không chắc chắn là làm cách nào để nó hoạt động cho các chức năng gọi lại không đồng bộ. Giả sử tôi đang tải tài nguyên từ chương trình phụ trợ. Tôi đã xác định loại lỗi của mình như sau:Xử lý lỗi không đồng bộ trong nhanh chóng 02
enum NetworkError: ErrorType {
case NoConnection
case InvalidJSON
case NoSuccessCode(code: Int)
}
Tôi định ném một trong những trường hợp này khi có sự cố. Đây là chức năng mà làm cho cuộc gọi mạng:
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
}
}
Nhưng ở đây biên dịch cho lỗi:
Cannot invoke
dataTaskWithRequest
with an argument list of type(NSURLRequest, (_,_,_) throws) -> Void)
Từ đây rõ ràng là cùng loại đóng cửa được coi là một loại khác nhau khi nó được khai báo với throws
.
Vì vậy, điều này hoạt động như thế nào sẽ hoạt động trong những trường hợp này?