क्योंकि
try {
File.Open("FileNotFound.txt", FileMode.Open);
} catch {
throw;
}
File.Open(string, FileMode)
करने के लिए कॉल, विफल रहता है तो या तो ठीक उसी अपवाद नमूना में अपनी तरह से ऊपर मिलेगा से
File.Open("FileNotFound.txt", FileMode.Open);
अलग नहीं है यूआई के लिए।
उस catch
ऊपर क्लॉज में, आप बस कुछ और किए बिना अपवाद को पकड़ रहे हैं और फिर से फेंक रहे हैं, जैसे कि लॉगिंग, लेनदेन को वापस लेना, अपवाद को लपेटना, इसमें अतिरिक्त जानकारी जोड़ने के लिए, या कुछ भी।
हालांकि
,
try {
File.Open("FileNotFound.txt", FileMode.Open);
} catch(Exception ex) {
GetLogger().LogException(ex);
throw;
}
किसी भी अतिरिक्तताओं को शामिल नहीं हैं और ReSharper शिकायत नहीं करनी चाहिए। इसी तरह,
try {
File.Open("FileNotFound.txt", FileMode.Open);
} catch(Exception ex) {
throw new MyApplicationException(
"I'm sorry, but your preferences file could not be found.", ex);
}
अनावश्यक नहीं होगा।
कैच-एंड-रीथ्रो होने के कारण कोई पकड़ नहीं है। फेंक साइट के बीच प्रत्येक पकड़ ब्लॉक के लिए अपवाद फ़िल्टर और पहली सफल पकड़ किसी भी 'आखिरकार' ब्लॉक निष्पादित करने से पहले चलाएगी; एक कैच-एंड-रेथ्रो इसके बाहर के सभी अपवाद फ़िल्टर चलाने से पहले चलाने के लिए सभी 'आखिरकार' ब्लॉक का कारण बन जाएगा। बीटीडब्ल्यू, रिचर्पर खुश है अगर कैच-एंड-रेथ्रो का पालन करना एक और अधिक सामान्य पकड़ ब्लॉक है जो कुछ करता है (तो कैच-एंड-रेथ्रो बाद वाले कैच ब्लॉक को बाईपास करने के लिए काम करेगा)? – supercat