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 जोड़ सकते हैं।

यहां बताया गया है कि यह कैसा दिख सकता है:

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

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

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


  1. विंडोज 11 में क्रिएट रिस्टोर प्वाइंट कॉन्टेक्स्ट मेन्यू कैसे जोड़ें

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

  1. विंडोज 11 में पारदर्शी संदर्भ मेनू कैसे जोड़ें

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

  1. Windows 11 पर पारदर्शी संदर्भ मेनू कैसे जोड़ें

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