में एसिंक्रोनस त्रुटि हैंडलिंग इसलिए मैंने स्विफ्ट 2 में त्रुटि प्रबंधन की कोशिश की। लेकिन एक बात जो मुझे यकीन नहीं है कि यह एसिंक्रोनस कॉलबैक फ़ंक्शंस के लिए कैसे काम करें। मान लीजिए कि मैं बैकएंड से संसाधन लोड कर रहा हूं। मैंने अपनी त्रुटि प्रकार को निम्नलिखित की तरह परिभाषित किया:स्विफ्ट 2
enum NetworkError: ErrorType {
case NoConnection
case InvalidJSON
case NoSuccessCode(code: Int)
}
मैं कुछ गलत होने पर इन मामलों में से किसी एक को फेंकने की योजना बना रहा हूं। यहाँ समारोह नेटवर्क कॉल बनाता है:
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
}
}
लेकिन यहाँ संकलक त्रुटि देता है:
Cannot invoke
dataTaskWithRequest
with an argument list of type(NSURLRequest, (_,_,_) throws) -> Void)
यहाँ से यह स्पष्ट है कि एक ही बंद प्रकार एक अलग प्रकार के रूप में जब यह throws
साथ घोषित किया जाता है माना जाता है ।
तो इन परिस्थितियों में यह प्रयास करने वाली चीज़ कैसे काम करती है?