मैं कुछ कोड पर काम कर रहा हूं ताकि HttpWebRequest को असंकालिक रूप से उपयोग किया जा सके। यदि आप में से कोई भी पहले कभी ऐसा कर चुका है, तो आप जानते हैं कि त्रुटि प्रबंधन कुछ दर्द हो सकता है क्योंकि यदि कॉलबैक विधियों में से एक में अपवाद फेंक दिया जाता है, तो इसे किसी कोशिश के माध्यम से कॉलिंग कोड पर वापस नहीं भेजा जा सकता/पकड़ ब्लॉक।सी # में एसिंक्रोनस HttpWebRequest अपवादों को संभालने का सबसे अच्छा तरीका क्या है?
मैं जो करना चाहता हूं वह है कि मेरी कॉल ऑब्जेक्ट में अपवादों को सहेजकर त्रुटियों को संभाल लें जो प्रत्येक कॉलबैक विधि को पास हो जाती है। यदि कोई अपवाद पकड़ा जाता है, तो राज्य ऑब्जेक्ट अपडेट हो जाएगा और फिर http कॉल निरस्त कर दिया जाएगा। मेरी समस्या यह है कि मेरे राज्य वस्तु में, मुझे अपवाद संपत्ति का उपयोग करना होगा ताकि किसी भी प्रकार का अपवाद संग्रहीत किया जा सके। जब कॉलिंग कोड राज्य ऑब्जेक्ट की जांच करता है और अपवाद को "देखता है", तो यह नहीं पता कि यह किस प्रकार का अपवाद है।
क्या मेरे राज्य ऑब्जेक्ट को किसी प्रकार का अपवाद रखने की अनुमति देने का कोई तरीका है, लेकिन फिर भी अपवाद को दृढ़ता से टाइप किया गया है?
राज्य वस्तु
public class HttpPostClientAsyncModel
{
public HttpResponseSnapshot Response { get; set; }
public HttpPostClientAsyncStatus Status { get; set; }
public Exception Exception { get; set; }
public WebRequest Request { get; set; }
}
बुला कोड सिर्फ एक कोशिश ब्लॉक के अंदर model.Exception फेंक सकते हैं और फिर सेटअप के लिए फैल जाती है विशिष्ट अपवाद उपप्रकार जो कॉलर उचित रूप से संभाल सकता है। या शायद नहीं ... :) – dlev
क्या यह केवल सीखने के अनुभव के लिए है? 'HttpWebRequest.BeginGetResponse' के साथ क्या गलत है? –