कुछ कोड पर विचार करें जो एक चेक अपवाद फेंक सकता है (प्रकार Exception
का अपवाद)। आपका कोड catch
बेशक अपवाद है। आप अपवाद को केवल निगल नहीं सकते हैं, आपका कोड उपयोगकर्ता को आपके उपयोगकर्ता इंटरफ़ेस के माध्यम से किसी भी तरह से रिपोर्ट करता है। एक लॉग फ़ाइल में, शायद, या एक जीयूआई पॉप-अप का उपयोग कर।क्या आपको अपवादों के संदेश पाठ की रिपोर्ट करनी चाहिए?
क्या आपके द्वारा उपयोगकर्ता को भेजे गए पाठ में अपवाद का संदेश टेक्स्ट शामिल होना चाहिए। यही है, Throwable.getMessage()
या Throwable.getLocalizedMessage()
द्वारा प्रदान किया गया पाठ?
मुझे नहीं लगता, लेकिन ऐसा लगता है कि मेरे साथ असहमत हैं। तो मुझे क्या गलत मिला है? मेरा तर्क इस प्रकार है।
- संदेश तब बनाया गया जब अपवाद फेंक दिया गया था। इसलिए यह सर्वोत्तम रूप से बहुत कम स्तर की जानकारी प्रदान कर सकता है, जो किसी उपयोगकर्ता को रिपोर्ट करने के लिए अनुचित हो सकता है।
- दार्शनिक रूप से, संदेश का उपयोग करके मुझे अपवादों के पूरे बिंदु के खिलाफ लगता है, जो हैंडलिंग और रिपोर्टिंग (
catch
भाग) पूरा होने से त्रुटि प्रबंधन (throw
भाग) का पता लगाने और दीक्षा को अलग करना है। संदेश का उपयोग करना मतलब है कि संदेश रिपोर्टिंग के लिए अच्छा होना चाहिए, जो उस स्थान पर रिपोर्ट करने की ज़िम्मेदारी लेता है जो केवल पहचान और दीक्षा के लिए ज़िम्मेदार होना चाहिए। यही है, मैं तर्क दूंगा किThrowable
के डिजाइन का हिस्सा एक गलती थी। - संदेश स्थानीयकृत नहीं है। इसके नाम के बावजूद,
getLocalizedMessage()
बहुत अच्छा नहीं है क्योंकि आपको पता नहीं हो सकता कि आपcatch
अपवाद तक क्या लोकेल का उपयोग करना चाहते हैं (क्या आपके अंग्रेजी सिस्टम प्रशासकों द्वारा पढ़े गए सिस्टम लॉग पर जाने की रिपोर्ट है, या यह एक पॉप अप करने के लिए है जीयूआई के फ्रांसीसी उपयोगकर्ता के लिए खिड़की?)। - मुझे लगता है कि जावा 7 में
IOException
के लिए एक बेहतर अपवाद पदानुक्रम है, जिससे आप अलग-अलगcatch
खंडों में विभिन्न प्रकार के I/O erors को संभालने में सक्षम बनाते हैं, जिससेgetMessage()
टेक्स्ट कम महत्वपूर्ण होता है। इसका तात्पर्य है कि जावा डिजाइनरgetMessage()
के साथ कुछ हद तक असहज हैं।
मैं नहीं पूछ रहा हूँ कि क्या ढेर ट्रेस रिपोर्टिंग उपयोगी है। एक स्टैक-ट्रेस केवल एक अपवाद के लिए उपयोगी होने जा रहा है जो एक बग का सुझाव देता है। यह एक अनचेक अपवाद के लिए है। मुझे लगता है कि ऐसी परिस्थितियों में अपवाद संदेश का निम्न स्तर का विवरण प्रदान करना केवल उपयोगी नहीं है लेकिन अनिवार्य है। लेकिन मेरा प्रश्न चेक अपवादों से संबंधित है, जैसे फ़ाइल-नहीं मिला।
एक संबंधित प्रश्न: http://stackoverflow.com/questions/2790528/extracting-user-friendly-exception-details-in-java – Raedwald
कोई 1 आकार फिट नहीं है। यह इस पर निर्भर करता है कि "आपका लक्षित दर्शक कौन है?" – Pacerier