टीपीएल कार्यों में अपवादों को संभालने पर मैं अपवादों को संभालने के दो तरीकों से आया हूं। पहला काम के भीतर अपवाद पकड़ता और इतने की तरह परिणाम के भीतर इसे रिटर्न:कार्य समांतर लाइब्रेरी अपवाद हैंडलिंग
var task = Task<Exception>.Factory.StartNew(
() =>
{
try
{
// Do Something
return null;
}
catch (System.Exception e)
{
return e;
}
});
task.ContinueWith(
r =>
{
if (r.Result != null)
{
// Handle Exception
}
});
दूसरा प्रलेखन के भीतर दिखाया एक है और मैं उचित तरीके से काम करने के लिए लगता है:
var task = Task.Factory.StartNew(
() =>
{
// Do Something
});
task.ContinueWith(
r =>
{
if (r.Exception != null)
{
// Handle Aggregate Exception
r.Exception.Handle(y => true);
}
});
मैं सोच रहा हूं कि पहले दृष्टिकोण के साथ कुछ गलत है या नहीं? मुझे इस तकनीक का उपयोग करके हर बार और फिर से 'अनचाहे कुल अपवाद' अपवाद प्राप्त हुए हैं और यह सोच रहा था कि यह कैसे हो सकता है?
स्पष्टीकरण के लिए, मुझे लगता है कि दूसरा पैटर्न बेहतर है लेकिन मेरे पास कोड का एक हिस्सा है जो पहले पैटर्न का उपयोग करता है और मैं यह पता लगाने की कोशिश कर रहा हूं कि इसे फिर से फैक्टरिंग की आवश्यकता है यानी अगर यह पता चला है कि सभी अपवाद फंस जाएंगे नहीं।
मेरे पास एक ही समस्या थी, हालांकि मैंने कार्य के साथ जांच की थी। मैंने पाया कि अगर यह कार्य के दौरान अपवाद था, भले ही मैंने पहली चीज की जांच की थी, और इसे नोट किया और छोड़ दिया, यह अभी भी मुद्दों का कारण .. और मुझे एक अपवाद मिला जो बाहर नहीं होना चाहिए .. – BugFinder