मैंने सी # प्रारंभिक पुस्तक में पढ़ा है कि आपको अपवाद नहीं लेना चाहिए यदि आपको नहीं पता कि इसके साथ क्या करना है। जावा में प्रोग्रामिंग करते समय उस सलाह की सोच के बारे में सोचते हुए, मुझे कभी-कभी पता चलता है कि मुझे नहीं पता कि अपवाद के साथ क्या करना है, लेकिन मुझे संकलन त्रुटि से बचने के लिए इसे पकड़ने के लिए मजबूर होना पड़ता है या इसे "इसे जोड़ना" पड़ता है। मैं throws
के साथ क्लटर विधियों को कॉल पेड़ के सभी तरह से क्लॉज नहीं करना चाहता था, इसलिए मैंने अक्सर निम्न में RuntimeException
के अपवाद को "रूपांतरित" करने का सहारा लिया है। throws
जोड़ना एक अपवाद के लिए कई तरीकों से खंडित है जो वास्तव में "हैंडल" नहीं है (ठीक से निपटाया जाता है) वर्बोज़ और विचलित लगता है। क्या निम्न बुरी शैली है और यदि ऐसा है तो इससे निपटने का एक बेहतर तरीका क्या है?आपदाजनक अपवादों से निपटने
try {
thread.join();
}
catch (InterruptedException e) {
Console.printwriter.format("%s\n", e.printStackTrace());
throw new RuntimeException();
}
संपादित करें: कोड संशोधन के बाद आप शायद कुछ अनावश्यक throws
खंड के साथ अंत: अव्यवस्था के अलावा, वहां percolating अपवादों के साथ एक और समस्या है। उन्हें साफ़ करने का एकमात्र तरीका परीक्षण और त्रुटि से है: उन्हें हटाएं और देखें कि संकलक शिकायत करता है या नहीं। जाहिर है, अगर आप कोड को साफ रखना चाहते हैं तो यह परेशान है।
इससे निपटने का बेहतर तरीका यह है कि कोड को ऐसे तरीके से लिखना है जहां आपको लगातार अपवाद नहीं डालना पड़े। – lifetimes
सहमत हुए। मैं आमतौर पर कई नए परिभाषित अपवादों की घोषणा नहीं करता हूं। मैं मुख्य रूप से तीसरे पक्ष और जावा अपवादों के बारे में चिंतित हूं। – H2ONaCl
@ user1394965 हां, आपका कोड अपवाद "लगातार" नहीं फेंकना चाहिए। लेकिन अपवाद संभव है कि यह एक बहुत ही अलग बात है। आईओ ऑपरेशंस या अवरुद्ध तरीकों से जुड़े कुछ भी अपरिहार्य अपवाद हैंडलिंग के साथ riddled होने की संभावना है। –