Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रूबी में कस्टम अपवादों में महारत हासिल करना:त्रुटि प्रबंधन और अवलोकनशीलता को बढ़ाना

<पी> सॉफ़्टवेयर विकास के दौरान अपवादों को अनुकूलित करना आमतौर पर एक आम चिंता का विषय नहीं है। लेकिन यदि आप अवलोकन उपकरण में कोई त्रुटि पकड़ते हैं और समस्या की सही और त्वरित पहचान नहीं कर पाते हैं, तो आपको अपवाद के बारे में अधिक जानकारी और विवरण की आवश्यकता हो सकती है।

<पी> यह आलेख आपको दिखाएगा कि रूबी में अपवादों को कैसे अनुकूलित किया जाए और त्रुटि जानकारी की कमी के कारण संभावित भविष्य की समस्याओं को कैसे कम किया जाए।

<पी> आइए सीधे गोता लगाएँ!

एक त्वरित साइड-नोट

<पी> यह पोस्ट ऐपसिग्नल के साथ रूबी में डिबगिंग की स्वाभाविक प्रगति है, इसलिए हम डिबगिंग के अवलोकन और कस्टम अपवादों के परिचय के लिए पहले इसे पढ़ने की सलाह देते हैं।

रूबी के साथ एक अपवाद को कैसे बचाएं

<पी> रूबी के पास Exception नामक एक क्लास है , जिससे त्रुटि प्रबंधन कक्षाएं विरासत में मिलती हैं। इस अनुभाग में, हम अपना कस्टम अपवाद बनाने से पहले रूबी के संरचनात्मक अपवाद प्रवाह को बेहतर ढंग से समझेंगे।

<पी> Exception रूबी में मुख्य अपवाद वर्ग है, और rescue Exception Exception से प्राप्त सभी अपवादों को पकड़ लेगा . हमारे ऐप में इसका उपयोग करना सर्वोत्तम अभ्यास नहीं है, क्योंकि यह रूबी द्वारा आंतरिक रूप से उपयोग किए गए सभी अपवादों को पकड़ लेगा।

<पी> रूबी में अपवाद को बचाने का सबसे आसान तरीका एक begin ... rescue बनाना है नीचे दिए गए उदाहरण की तरह कोड का ब्लॉक:

 <पी> Exception से सभी अपवादों को पकड़ लेंगे, हमें फ़िल्टर करने के लिए कुछ और विशिष्ट का उपयोग करने का प्रयास करना चाहिए और केवल वही त्रुटि प्राप्त करनी चाहिए जो हम चाहते हैं। एक उदाहरण StandardError है क्लास, एक मानक बचावकर्ता जिसका उपयोग रूबी के आंतरिक अपवादों को अनदेखा करके एप्लिकेशन कोड त्रुटियों से संबंधित अपवादों को पकड़ने के लिए किया जाता है।

<पी> StandardException को पकड़ने के लिए , आप नीचे दिए गए उदाहरण का उपयोग कर सकते हैं:

 <पी> या, यदि कोई अपवाद वर्ग नहीं बताया गया है, तो रूबी StandardException द्वारा संभाले गए अपवादों को वापस कर देगी क्लास.

 <पी> रूबी के साथ एक कस्टम अपवाद बनाने के लिए, आप संभवतः एक क्लास बनाएंगे जो StandardError से प्राप्त होगी . हम इसे अगले कुछ अनुभागों में कवर करेंगे।

<पी> अपवादों के बारे में अधिक जानने और विरासत में मिलने वाले सर्वोत्तम अपवाद को खोजने के लिए, रूबी की अपवाद सूची देखें।

रूबी अपवाद में अतिरिक्त जानकारी जोड़ना

<पी> प्रासंगिक जानकारी भेजे बिना एक नया अपवाद बनाने से समस्या को डीबग करने - पहचानने और ठीक करने में प्रभावी ढंग से मदद नहीं मिलेगी। आपको त्रुटि विवरण जोड़ना होगा. यहां, हम देखेंगे कि ऑब्जेक्ट से कस्टम अपवाद तक जानकारी कैसे पास की जाए।

<पी> आइए हम जिस डेटा को लॉग करना चाहते हैं उसे प्राप्त करने के लिए एक नया कस्टम अपवाद बनाएं। जैसा कि पिछले अनुभाग में बताया गया है, कस्टम अपवाद को StandardError से इनहेरिट करना होगा .

<पी> इस कार्यान्वयन का परीक्षण करने के लिए आप एक सरल रेल परियोजना का उपयोग कर सकते हैं। exceptions नामक एक नया फ़ोल्डर बनाएं app के अंदर फ़ोल्डर और custom_exception.rb नामक एक वर्ग आपके रेल प्रोजेक्ट में।

 <पी> इस अपवाद वर्ग में, हम उन सभी सूचनाओं को परिभाषित कर सकते हैं जिन्हें लॉग में दिखाने की आवश्यकता है और हम अपने डेटा के लिए चार विशेषताओं का उपयोग करते हैं:

  • अपवाद की गणना करने के लिए एक कोड
  • एक नाम
  • एक सूचनात्मक संदेश
  • रूबी द्वारा अपवाद के बारे में आंतरिक जानकारी पहले ही प्रदान की जा चुकी है
<पी> और अब हम एक begin...rescue बनाते हैं CustomException को बढ़ाने के लिए ब्लॉक करें और पैरामीटर को अपवाद विशेषताओं में पास करें।

 <पी> यह उपयोगी लगता है, तो आइए कार्यान्वयन जारी रखें और अपवाद लॉग को अनुकूलित करने के लिए इस डेटा का उपयोग करें।

रूबी में एक अपवाद का विस्तार

<पी> एक अपवाद का विस्तार हमें अनुकूलन को अधिक विशिष्ट और पुन:प्रयोज्य स्तर तक बढ़ाने की अनुमति देता है। जिस प्रकार रूबी के पास विभिन्न प्रकार की त्रुटियों के लिए कई अपवाद हैं, उसी प्रकार हम भी अपने सिस्टम में प्रोग्रामिंग की इस पंक्ति का अनुसरण कर सकते हैं।

<पी> इसके बाद, आइए समझें कि हमारे अपवाद को कैसे ओवरराइड करें और इसे ऐसे संदर्भ में उपयोग करें जो विस्तार की मांग करता है।

<पी> लॉग में जानकारी ढूँढना एक दर्दनाक गतिविधि है। डेवलपर्स अक्सर त्रुटियों या खोज और फ़िल्टर करने के तरीके के बारे में अधिक जानकारी शामिल न करने के लिए खुद को दोषी मानते हैं। यदि आप इसे प्रदान करने वाले किसी भी निगरानी उपकरण का उपयोग नहीं कर रहे हैं, तो सार्थक डेटा सहित आपको निकट भविष्य में बचाया जा सकता है।

<पी> प्रो-टिप :ऐपसिग्नल में कस्टम अपवादों को कैसे सेट अप और ट्रैक करें, इसके बारे में जानकारी के लिए हमारी पोस्ट ऐपसिग्नल के साथ रूबी में डिबगिंग में 'ऐपसिग्नल के साथ रूबी में डिबगिंग अपवाद' अनुभाग देखें। <पी> नीचे दिए गए उदाहरण में, हम लॉग में अपवादों के प्रदर्शन को अनुकूलित करेंगे। प्रारंभ में, आप सोच सकते हैं कि यह डेटा दिखाने का एक हल्का और सुंदर तरीका है। हालाँकि, डेटा में उपयोग किए गए कीवर्ड त्रुटि खोजने और एप्लिकेशन की निगरानी करने वाले किसी भी व्यक्ति की मदद करने के लिए महत्वपूर्ण हैं।

<पी> अपने Gemfile में नीचे दिए गए कोड को शामिल करके रंगीन रत्न को अपने प्रोजेक्ट में जोड़ें।

 <पी> कलराइज़ जेम इंस्टॉल करने और अपना रेल एप्लिकेशन लॉन्च करने के लिए बंडल चलाएँ।

 <पी> अब, अपने अपवाद वर्ग में, रत्न आयात करें। विशेषताओं को स्वरूपित तरीके से प्रिंट करें, ताकि किसी महत्वपूर्ण त्रुटि को देखना और तुरंत ढूंढना आसान हो।

 <पी> इस विज़ुअल अनुकूलन के परिणाम देखें और अपना प्रारूप और शैली बनाने के लिए कुछ विकल्पों का परीक्षण करें।

<पी> रूबी में कस्टम अपवादों में महारत हासिल करना:त्रुटि प्रबंधन और अवलोकनशीलता को बढ़ाना

समापन और अगले चरण

<पी> इस पोस्ट में, हमने आपके लॉग में रूबी अपवाद को अनुकूलित और हाइलाइट करने का तरीका बताया। कई अन्य अनुकूलन संभव हैं, लेकिन जो सबसे महत्वपूर्ण है वह यह है कि आप अपने एप्लिकेशन से संबंधित अपवादों को संभालें। और याद रखें, सभी अपवादों पर समान स्वरूपण शैली लागू न करें, जैसा कि रेल पहले से ही करता है।

<पी> हैप्पी कोडिंग!

<पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें! रूबी में कस्टम अपवादों में महारत हासिल करना:त्रुटि प्रबंधन और अवलोकनशीलता को बढ़ाना

ब्रेना मोंटेइरो

<पी> अतिथि लेखिका ब्रेना एक टेक लीड हैं जो नए डेवलपर्स को सलाह देने के शौकीन हैं और उच्च प्रदर्शन करने वाली टीमों को विकसित करने और उनका नेतृत्व करने में अनुभवी हैं। उसके पास स्केलेबल एपीआई बनाने और क्लाउड सेवाओं के बीच एकीकरण का अनुभव है, वह विकासवादी वास्तुकला के बारे में उत्साही है, और एक विस्तारित वास्तविकता (एक्सआर) प्रशिक्षु है।

<पी> ब्रेना मोंटेइरो

द्वारा सभी लेख
  1. मेरी HTML फ़ाइल को स्रोत मॉड्यूल से JavaScript फ़ंक्शन क्यों नहीं मिल रहा है? मेरी HTML फ़ाइल को स्रोत मॉड्यूल से JavaScript फ़ंक्शन क्यों नहीं मिल रहा है?

    ऐसा तब हो सकता है जब आपने निर्यात कथन का उपयोग नहीं किया हो। फ़ंक्शन से पहले निर्यात का उपयोग करें जिसे स्क्रिप्ट फ़ाइल में आयात किया जाएगा। जावास्क्रिप्ट फ़ाइल इस प्रकार है जिसकी फ़ाइल का नाम डेमो.जेएस है। demo.js console.log("function will import"); export function test(){    

  1. सर्वर रहित रेडिस पर पाइपलाइन रेस्ट एपीआई सर्वर रहित रेडिस पर पाइपलाइन रेस्ट एपीआई

    Upstash देशी Redis API के अलावा REST API का भी समर्थन करता है। आरईएसटी एपीआई डेवलपर्स को सर्वर रहित और किनारे के कार्यों से कनेक्शन के मुद्दों के बिना अपने रेडिस तक पहुंचने में मदद करता है। लेकिन अगर आप एक ही फ़ंक्शन में कई रेडिस कमांड निष्पादित करते हैं, तो इसका मतलब है कि आप डेटाबेस को कई बार कॉल

  1. पायथन में दिए गए सूचकांकों के साथ स्ट्रिंग को फेरबदल करने का कार्यक्रम पायथन में दिए गए सूचकांकों के साथ स्ट्रिंग को फेरबदल करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग s और सूचकांकों की एक सूची है, वे समान लंबाई के हैं। स्ट्रिंग s को इस तरह से फेरबदल किया जाएगा कि स्थिति i पर वर्ण, अंतिम स्ट्रिंग में सूचकांकों [i] पर चला जाता है। हमें अंतिम स्ट्रिंग ढूंढनी है। इसलिए, यदि इनपुट s =ktoalak ind =[0,5,1,6,2,4,3] जैसा है, तो आउटपुट क