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

रूबी एक्सेप्शन को प्रासंगिक डेटा के साथ बढ़ाएं – एक व्यावहारिक गाइड

कभी-कभी मानक बैकट्रेस/एरर मैसेज कॉम्बो पर्याप्त नहीं होता। कभी-कभी आपको एरर के कारण का पता लगाने के लिए अतिरिक्त डेटा की आवश्यकता होती है। सौभाग्य से, रूबी में यह करना बेहद आसान है।

एरर मैसेज कस्टमाइज़ करना

अपने एरर में प्रासंगिक जानकारी जोड़ने का सबसे सरल तरीका है उसे एक्सेप्शन के मैसेज में शामिल करना। नीचे दिए गए उदाहरण में मैं एक एक्सेप्शन पकड़ रहा हूँ और उसे एक नए मैसेज के साथ फिर से उठा रहा हूँ:

begin raise "foo" rescue => e raise e.class, "bar" end # RuntimeError: bar 

इस दृष्टिकोण का एक अच्छा उपयोग मामला तब हो सकता है जब आप कोई टेम्पलेट रेंडर कर रहे हों। टेम्पलेट के अंदर होने वाला कोई भी एक्सेप्शन टेम्पलेट के फ़ाइलनाम को नहीं जानता। लेकिन डीबगिंग के दौरान आपके लिए यह जानकारी बहुत महत्वपूर्ण होती है।

यहाँ एक उदाहरण है कि कैसे आप टेम्पलेट एरर को रेस्क्यू कर सकते हैं और मैसेज में फ़ाइलनाम जोड़ सकते हैं।

filename = "mytemplate.erb" template = File.read(filename) # Contains "<% 1/0 %>" e = ERB.new(template) begin e.result rescue => e raise e.class, [filename, e.message].join(": ") end # ZeroDivisionError: mytemplate.erb: divided by 0 

एक्सेप्शन रैप करना

एक्सेप्शन में प्रासंगिक जानकारी शामिल करने का एक अन्य विकल्प है एक कस्टम एक्सेप्शन बनाना। चूंकि रूबी में एक्सेप्शन भी अन्य चीजों की तरह क्लास होते हैं, आप इसमें जितने चाहें उतने attr_accessors जोड़ सकते हैं।

यह कुछ इस तरह दिख सकता है:

class TemplateError < StandardError attr_reader :filename def initialize(msg, filename) @filename = filename super(msg) end end begin ERB.new(template).result rescue => e raise TemplateError.new(e.message, filename) end 

हनीबैजर के कॉन्टेक्स्ट फीचर का उपयोग

ठीक है, मुझे यह शामिल करना पड़ा, क्योंकि हनीबैजर के पास आपके एक्सेप्शन में प्रासंगिक जानकारी जोड़ने का एक बहुत ही शानदार तरीका है। एक्सेप्शन ऑब्जेक्ट को संशोधित करने के बजाय, आप बस अपने एप्लिकेशन में कहीं से भी Honeybadger.context मेथड का उपयोग करते हैं।

class ApplicationController .... def find_current_user user = ... Honeybadger.context(user_id: user.id, user_email: user.email, user.scope: "user") end end 

जब कोई एक्सेप्शन होता है, तो कॉन्टेक्स्ट डेटा उसके साथ रिपोर्ट किया जाता है। फिर आप उस डेटा को हमारे वेब या मोबाइल ऐप्स में अन्य एक्सेप्शन डेटा के साथ देख सकते हैं।

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


  1. विंडोज 11 के कॉन्टेक्स्ट मेनू में रिस्टोर पॉइंट विकल्प आसानी से जोड़ें विंडोज 11 के कॉन्टेक्स्ट मेनू में रिस्टोर पॉइंट विकल्प आसानी से जोड़ें

    विंडोज 11 के साथ कई नई सुविधाएं पेश की गई हैं, जिनमें से कुछ को सेटिंग्स में थोड़ा काम करके सेट और कस्टमाइज़ किया जा सकता है। उनमें से एक है डेस्कटॉप पर विंडोज 11 के राइट-क्लिक मेनू में रिस्टोर पॉइंट बनाना। आज हम इसी विषय पर बात करेंगे और विंडोज 11 में रिस्टोर पॉइंट बनाएं कॉन्टेक्स्ट मेनू जोड़ने के

  1. Windows 11 में कॉन्टेक्स्ट मेनू को पारदर्शी कैसे बनाएं: चरण-दर-चरण गाइड Windows 11 में कॉन्टेक्स्ट मेनू को पारदर्शी कैसे बनाएं: चरण-दर-चरण गाइड

    यदि Windows 11 के बारे में एक चीज़ है जिसे आप नज़रअंदाज़ नहीं कर सकते, तो वह है इसके डिज़ाइन और यूज़र इंटरफेस में स्पष्ट प्रगति। इसकी नई पुनरावृत्ति में कई नई सुविधाओं के अलावा, Windows 11 आपके कॉन्टेक्स्ट मेनू को पारदर्शी बनाने के तरीके भी प्रदान करता है। इस लेख में, हम आपके Windows 11 पर पारदर्शी

  1. चरण-दर-चरण: Windows 11 में पारदर्शी कॉन्टेक्स्ट मेनू जोड़ें चरण-दर-चरण: Windows 11 में पारदर्शी कॉन्टेक्स्ट मेनू जोड़ें

    यदि Windows 11 के बारे में एक चीज़ है जिसे आप नज़रअंदाज़ नहीं कर सकते, तो वह है इसके डिज़ाइन और यूज़र इंटरफेस में स्पष्ट प्रगति। इसकी नई पुनरावृत्ति में कई नई सुविधाओं के अलावा, Windows 11 आपके कॉन्टेक्स्ट मेनू को पारदर्शी बनाने के तरीके भी प्रदान करता है। इस लेख में, हम आपके Windows 11 पर पारदर्शी