सॉफ्टवेयर डेवलपमेंट के दौरान एक्सेप्शन को कस्टमाइज़ करना आमतौर पर एक सामान्य चिंता नहीं है। लेकिन अगर आप एक ऑब्जर्वेबिलिटी टूल में एरर पकड़ते हैं और समस्या को सही और जल्दी से पहचान नहीं सकते, तो आपको एक एक्सेप्शन के बारे में अधिक जानकारी और विवरण की आवश्यकता हो सकती है।
यह लेख आपको दिखाएगा कि रूबी में एक्सेप्शन को कैसे कस्टमाइज़ करें और एरर जानकारी की कमी के कारण संभावित भविष्य की समस्याओं को कम करें।
सीधे अंदर गोता लगाते हैं!
एक त्वरित साइड-नोट
यह पोस्ट AppSignal के साथ रूबी में डीबगिंग की एक स्वाभाविक प्रगति है, इसलिए हम डीबगिंग के अवलोकन और कस्टम एक्सेप्शन के परिचय के लिए पहले उसे पढ़ने की सलाह देते हैं।
रूबी के साथ एक्सेप्शन को कैसे रेस्क्यू करें
रूबी में Exception नामक एक क्लास है, जिससे एरर-हैंडलिंग क्लासेस इनहेरिट करती हैं। इस सेक्शन में, हम अपने कस्टम एक्सेप्शन बनाने से पहले रूबी के संरचनात्मक एक्सेप्शन फ्लो को बेहतर ढंग से समझेंगे।
Exception रूबी में मुख्य एक्सेप्शन क्लास है, और rescue Exception Exception से इनहेरिट सभी एक्सेप्शन को पकड़ लेगा। हमारे ऐप में इसका उपयोग करना सर्वोत्तम अभ्यास नहीं है, क्योंकि यह रूबी द्वारा आंतरिक रूप से उपयोग किए जाने वाले सभी एक्सेप्शन को पकड़ लेगा।
रूबी में एक्सेप्शन को रेस्क्यू करने का सबसे आसान तरीका नीचे दिए गए उदाहरण की तरह begin ... rescue कोड ब्लॉक बनाना है:
चूंकि Exception सभी एक्सेप्शन को पकड़ लेगा, हमें केवल वही एरर प्राप्त करने के लिए कुछ अधिक विशिष्ट उपयोग करने का प्रयास करना चाहिए जो हम चाहते हैं। एक उदाहरण StandardError क्लास है, जिसका उपयोग एप्लिकेशन कोड एरर से संबंधित एक्सेप्शन को पकड़ने के लिए मानक रेस्क्यूअर के रूप में किया जाता है, रूबी के आंतरिक एक्सेप्शन को अनदेखा करके।
StandardException को पकड़ने के लिए, आप नीचे दिए गए उदाहरण का उपयोग कर सकते हैं:
या, यदि कोई एक्सेप्शन क्लास बताई नहीं गई है, तो रूबी StandardException क्लास द्वारा संभाले गए एक्सेप्शन लौटाएगा।
रूबी के साथ कस्टम एक्सेप्शन बनाने के लिए, आप शायद एक क्लास बनाएंगे जो StandardError से इनहेरिट करती है। हम अगले कुछ सेक्शन में इसे कवर करेंगे।
एक्सेप्शन के बारे में अधिक जानने के लिए और इनहेरिट करने के लिए सर्वोत्तम को खोजने के लिए, रूबी की एक्सेप्शन सूची देखें।
रूबी एक्सेप्शन में अतिरिक्त जानकारी जोड़ना
प्रासंगिक जानकारी भेजे बिना एक नया एक्सेप्शन बनाने से डीबगिंग - समस्या की पहचान और ठीक करने - में प्रभावी रूप से मदद नहीं मिलेगी। आपको एरर विवरण जोड़ने की आवश्यकता है। यहां, हम देखेंगे कि ऑब्जेक्ट्स से जानकारी को कस्टम एक्सेप्शन में कैसे पास किया जाए।
आइए केवल हमारे द्वारा लॉग किए जाने वाले डेटा को प्राप्त करने के लिए एक नया कस्टम एक्सेप्शन बनाएं। जैसा कि पिछले सेक्शन में उल्लेख किया गया है, कस्टम एक्सेप्शन को StandardError से इनहेरिट करने की आवश्यकता है।
आप इसे टेस्ट करने के लिए एक सिंपल रेल्स प्रोजेक्ट का उपयोग कर सकते हैं। अपने रेल्स प्रोजेक्ट में app फोल्डर के अंदर exceptions नामक एक नया फोल्डर बनाएं और custom_exception.rb नामक एक क्लास बनाएं।
इस एक्सेप्शन क्लास में, हम उन सभी सूचनाओं को परिभाषित कर सकते हैं जिन्हें लॉग में दिखाने की आवश्यकता है और हम अपने डेटा के लिए चार एट्रिब्यूट्स का उपयोग करते हैं:
- एक्सेप्शन को गिनने के लिए एक कोड
- एक नाम
- एक सूचनात्मक मैसेज
- रूबी द्वारा पहले से प्रदान की गई एक्सेप्शन के बारे में आंतरिक जानकारी विवरण
और अब हम CustomException को उठाने और पैरामीटर्स को एक्सेप्शन एट्रिब्यूट्स में पास करने के लिए एक begin...rescue ब्लॉक बनाते हैं।
यह उपयोगी लगता है, तो आइए कार्यान्वयन जारी रखें और लॉग में एक्सेप्शन को कस्टमाइज़ करने के लिए इस डेटा का उपयोग करें।
रूबी में एक्सेप्शन का विस्तार करना
एक एक्सेप्शन का विस्तार करने से हम कस्टमाइज़ेशन को अधिक विशिष्ट और पुन: प्रयोज्य स्तर तक बढ़ा सकते हैं। जैसे रूबी में विभिन्न प्रकार की एरर के लिए कई एक्सेप्शन हैं, हम अपने सिस्टम में प्रोग्रामिंग की इस लाइन का भी पालन कर सकते हैं।
आइए समझते हैं कि हमारे एक्सेप्शन को कैसे ओवरराइड करें और इसे एक संदर्भ में उपयोग करें जो विस्तार की मांग करता है।
लॉग में जानकारी ढूंढना एक दर्दनाक गतिविधि है। डेवलपर्स अक्सर एरर के बारे में अधिक जानकारी शामिल नहीं करने या कैसे खोजें और फ़िल्टर करें के लिए खुद को दोषी ठहराते हैं। यदि आप कोई मॉनिटरिंग टूल उपयोग नहीं कर रहे हैं जो यह प्रदान करता है, तो सार्थक डेटा शामिल करना आपको निकट भविष्य में बचा सकता है।
प्रो-टिप: AppSignal के साथ रूबी में एक्सेप्शन डीबग करने पर 'Debugging Exceptions in Ruby with AppSignal' सेक्शन देखें, यह जानने के लिए कि AppSignal में कस्टम एक्सेप्शन कैसे सेट अप और ट्रैक करें।
नीचे दिए गए उदाहरण में, हम लॉग में एक्सेप्शन के प्रदर्शन को कस्टमाइज़ करेंगे। प्रारंभ में, आप सोच सकते हैं कि यह डेटा दिखाने का सिर्फ एक हल्का और सुंदर तरीका है। हालांकि, डेटा में उपयोग किए गए कीवर्ड एक एरर ढूंढने और एप्लिकेशन की निगरानी करने वाले किसी भी व्यक्ति की मदद करने के लिए महत्वपूर्ण हैं।
अपने प्रोजेक्ट में colorize जेम जोड़ें द्वारा अपने Gemfile में नीचे दिए गए कोड को शामिल करके।
colorize जेम इंस्टॉल करने के लिए बंडल चलाएं और अपना रेल्स एप्लिकेशन लॉन्च करें।
अब, अपने एक्सेप्शन क्लास में, जेम आयात करें। एट्रिब्यूट्स को एक फॉर्मेटेड तरीके से प्रिंट करें, ताकि इसे देखना आसान हो और एक महत्वपूर्ण एरर को जल्दी से ढूंढा जा सके।
इस दृश्य कस्टमाइज़ेशन के परिणाम को देखें और अपना फॉर्मेट और स्टाइल बनाने के लिए कुछ विकल्पों का परीक्षण करें।

समापन और अगले कदम
इस पोस्ट में, हमने कवर किया कि अपने लॉग में रूबी एक्सेप्शन को कैसे कस्टमाइज़ और हाइलाइट करें। कई अन्य कस्टमाइज़ेशन संभव हैं, लेकिन सबसे महत्वपूर्ण बात यह है कि आप अपने एप्लिकेशन के लिए प्रासंगिक एक्सेप्शन को संभालें। और याद रखें, सभी एक्सेप्शन पर एक ही फॉर्मेटिंग स्टाइल लागू न करें, क्योंकि रेल्स पहले से ही ऐसा करता है।
हैप्पी कोडिंग!
P.S. यदि आप प्रेस से बाहर आते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और कभी भी एक भी पोस्ट मिस न करें!
Brena Monteiro
गेस्ट लेखक Brena नए डेवलपर्स को मेंटर करने के बारे में भावुक एक टेक लीड हैं और उच्च-प्रदर्शन वाली टीमों को विकसित करने और नेतृत्व करने में अनुभवी हैं। उन्हें स्केलेबल APIs और क्लाउड सेवाओं के बीच इंटीग्रेशन बनाने में अनुभव है, विकासवादी आर्किटेक्चर के बारे में उत्साही हैं, और एक एक्सटेंडेड रियलिटी (XR) अपरेंटिस हैं।
Brena Monteiro के सभी लेख