खैर, catch(Exception ex)
बस केवल एक ही अंतर साथ catch(Exception)
रूप में ही है: catch(Exception ex)
में हम अपवाद वर्ग (त्रुटि के कारण) उदाहरण के लिए एक उपयोग कर सकते है।
try {
...
}
catch (AppServerException e) {
Console.WriteLine("Application server failed to get data with the message:");
Console.WriteLine(e.Message); // <- What's actually got wrong with it
}
आप अपवाद वर्ग उदाहरण की जरूरत नहीं है, उदाहरण के लिए: आमतौर पर आप प्रिंट करने के लिए मूल संदेश एक अपवाद वर्ग उदाहरण की जरूरत है तुम सिर्फ अपवाद का उपभोग करने की योजना है, पकड़ (अपवाद पूर्व) वाक्य रचना अत्यधिक है और पकड़ (अपवाद) prefferable है:
try {
c = a/b;
}
catch (DivideByZeroException) {
c = Int.MaxValue; // <- in case b = 0, let c be the maximum possible int
}
अंत में। बिना फिर से Throughing सामान्य अपवाद वर्ग पकड़ नहीं है:
try {
int c = a/b;
}
catch (Exception) { // <- Never ever do this!
Console.WriteLine("Oh NO!!");
}
तुम सच में कोड करने के लिए "जो कुछ त्रुटि (सीपीयू से हरा धूआं शामिल है) था सिर्फ प्रिंट आउट happend" ओह नहीं "और आगे बढ़ें" करना चाहते हैं?
tran.Start();
try {
...
tran.Commit();
}
catch (Exception) {
// Whatever had happened, let's first rollback the database transaction
tran.Rollback();
Console.WriteLine("Oh NO!");
throw; // <- re-throw the exception
}
स्रोत
2013-08-11 16:16:14
आप क्या अपवाद आप को पकड़ने रहे हैं (जानकारी ढेर पर, संदेश आदि) में कोई दिलचस्पी नहीं कर रहे हैं अरे नहीं तो आप बस लिख सकता है 'पकड़ {Console.WriteLine (": अपवाद वर्ग साथ पैटर्न कुछ इस तरह है ");}' – Steve
अंतर यह है कि आपके पास * कुछ * विचार होगा कि आपका प्रोग्राम 1 स्निपेट में सही ढंग से काम क्यों कर रहा है। दूसरे स्निपेट में कोई भी नहीं। दूसरा तरीका यह है कि SO उपयोगकर्ता ऐसे प्रश्न पूछते हैं जैसे "यह काम नहीं करता है, एक त्रुटि हुई"। बस इस तरह कोड लिखो मत। –
@ स्टेव 'पकड़' और 'पकड़ (अपवाद)' के बीच एक छोटा सा अंतर है। पहले सभी अपवाद वस्तुओं को पकड़ लेंगे, दूसरा केवल 'अपवाद' से प्राप्त अपवाद वस्तुओं को पकड़ लेगा। सी # में आप केवल 'अपवाद' से प्राप्त वस्तुओं को फेंक सकते हैं, लेकिन सीएलआर अधिक समर्थन करता है। – user1908061