मैं एक कमांड लाइन उपयोगिता बना रहा हूं जो उप-निर्देशिका/फ़ाइलों को हटा देगा। यदि कोई फ़ाइल उपयोग में है, तो System.IO.IOException
फेंक दिया गया है। मैं अपने लूप के अंदर एक कोशिश-पकड़ ब्लॉक का उपयोग करता हूं।क्या यह एक लूप लूप में एक कोशिश-पकड़ रखने का बुरा अभ्यास है?
प्रश्न:
यह 1.Is खराब व्यवहार का पाश के लिए एक के भीतर एक कोशिश पकड़ के लिए?
2. यदि हाँ, बेहतर विकल्प क्या है?
मेरे कोड:
System.IO.DirectoryInfo di = new DirectoryInfo(path);
foreach (FileInfo file in di.GetFiles())
{
try
{
file.Delete();
}
catch(System.IO.IOException)
{
Console.WriteLine("Please Close the following File {0}", file.Name);
}
}
संदेश मानता है कि विफलता इसलिए है क्योंकि फ़ाइल खोली गई है। अगर किसी अन्य कारण से फ़ाइल को हटाया नहीं जा सकता है तो क्या होगा? –
@EricLippert - मैं बिल्कुल सोच रहा था, लेकिन, मुझे यकीन है कि कैसे आगे बढ़ना है। अगर किसी अन्य कारण से फ़ाइल को हटाया नहीं जा सकता है तो आप कैसे संभालेंगे? –
ठीक है, पहले, तय करें कि कोई परवाह करता है या नहीं। अगर कोई परवाह नहीं करता है, तो इसके बारे में तनाव न करें। अगर कोई परवाह करता है, तो अगली बात यह तय करना है कि उन्हें कैसे बताना है। कंसोल आउटपुट शायद एक अच्छा तरीका है, शायद नहीं। बाकी कार्यक्रम को समझने के बिना कहना मुश्किल है। करने के लिए अगली बात यह तय करना है कि उन्हें क्या कहना है। उन्हें सच बताएं: "फ़ाइल blah.txt हटाया नहीं जा सका"। अधिक संदर्भ जोड़ने के लिए अपवाद से संदेश देने पर विचार करें। लेकिन सच्चाई जो आप यहां जानते हैं वह यह है कि फ़ाइल को हटाया नहीं जा सका, इसलिए इसके साथ शुरू करें। –