मैंब्लॉक का उपयोग निगलने अपवाद
void foo1()
{
using(...){...}
}
void foo2()
{
using(...){...}
}
void foo3()
{
using(...){...}
}
है और मैं
void foo()
{
...
backgroundWorker.DoWork += (s, ev) =>
{
try
{
foo1();
foo2();
foo3();
}
catch (Exception ex)
{
// log ex
}
};
...
}
है और मैं अभी-अभी पढ़ा कि using
ब्लॉक अपवाद निगल। , foo2()
और foo3()
से foo()
में अपवादों को संभालने का यह एक शानदार तरीका है। मैं विधियों में प्रत्येक using
ब्लॉक के अंदर एक कोशिश/पकड़ना चाहता हूं। मैं this post में ठोकर खाई जहां एक विस्तार विधि का सुझाव दिया गया है, लेकिन मैं सिर्फ यह देखने के लिए जांच कर रहा हूं कि कुछ बेहतर है या नहीं।
एफवाईआई, नेटवर्क डिस्कनेक्शन using
ब्लॉक के अंदर तर्क को अपवाद फेंकने का कारण बनता है और यही वह है जो मैं एक आम जगह में संभालने की कोशिश कर रहा हूं।
धन्यवाद,
क्या पृथ्वी पर आप के बारे में बात कर रहे हैं से बबल-अप और अपवाद के लिए इस कोड की कोशिश? प्रयोग अपवादों को अवरुद्ध नहीं करता है। यह इस अर्थ में अपवादों के साथ बातचीत करता है कि स्थानों का उपयोग करके एक निश्चित प्रयास .. मुख्य रूप से कथन ब्लॉक के आसपास है, लेकिन उपयोग कथन ब्लॉक के भीतर उठाए गए अपवादों को नहीं मारता है। – dthorpe
मुझे लगता है कि आपकी समस्या यह है कि यह आपके पृष्ठभूमि कार्यकर्ता धागे को अपवाद फेंक रहा है और आपके पास उस पर कुछ भी जांच नहीं है जो इसे आपके मुख्य धागे पर बुलबुला करने के लिए है। आपके 'उपयोग' ब्लॉक के साथ इसके साथ कुछ भी नहीं होना चाहिए। हालांकि, मैं यहां कुछ धारणाएं भी कर रहा हूं। एक 'उपयोग' ब्लॉक एक आईडीस्पोजेबल वेरिएबल, कोड चलाने के लिए सिंटैक्टिक चीनी है, फिर अंत में उस ऑब्जेक्ट पर डिसपोज़() को कॉल करना अगर मुझे सही याद है। – Jaxidian
@ सेथो एमएसडीएन पेज बताता है कि कंपाइलर 'उपयोग' को 'try-end' ब्लॉक' में अनुवाद करता है, जहां 'आखिरकार' ब्लॉक कॉल 'डिस्प्ले()' है लेकिन कोई पकड़ ब्लॉक नहीं है, इसलिए किसी भी अपवाद को फेंक दिया जा सकता है। –