रूबी में अपने स्वयं के अपवाद बनाना आसान है। बस इन चरणों का पालन करें:
1. एक नई कक्षा बनाएं
अपवाद वर्ग हैं, जैसे रूबी में बाकी सब कुछ! एक नए प्रकार का अपवाद बनाने के लिए, बस एक ऐसा वर्ग बनाएं जो StandardError या उसके किसी बच्चे से विरासत में मिला हो।
class MyError < StandardError
end
raise MyError
परंपरा के अनुसार, नए अपवादों में "त्रुटि" में समाप्त होने वाले वर्ग के नाम होते हैं। अपने कस्टम अपवादों को मॉड्यूल के अंदर रखना भी एक अच्छा अभ्यास है। इसका मतलब है कि आपकी अंतिम त्रुटि कक्षाएं इस तरह दिखाई देंगी:ActiveRecord::RecordNotFound
और Net::HTTP::ConnectionError
।
2. एक संदेश जोड़ें
प्रत्येक रूबी अपवाद वस्तु में एक संदेश विशेषता होती है। यह टेक्स्ट का लंबा हिस्सा है जो अपवाद नाम के आगे प्रिंट होता है
अपवाद की संदेश विशेषता का उदाहरण
जब आप कोई अपवाद उठाते हैं तो आप एक संदेश निर्दिष्ट कर सकते हैं, जैसे:
raise MyError, "My message"
और आप अपने स्वयं के कंस्ट्रक्टर को जोड़कर अपने कस्टम त्रुटि वर्ग में एक डिफ़ॉल्ट संदेश जोड़ सकते हैं।
class MyError < StandardError
def initialize(msg="My default message")
super
end
end
3. अपने अपवाद में कस्टम डेटा विशेषताएँ जोड़ें
आप अपने अपवाद में कस्टम डेटा जोड़ सकते हैं जैसे आप इसे किसी अन्य वर्ग में करते हैं। आइए अपनी कक्षा में एक विशेषता रीडर जोड़ें और कंस्ट्रक्टर को अपडेट करें।
class MyError < StandardError
attr_reader :thing
def initialize(msg="My default message", thing="apple")
@thing = thing
super(msg)
end
end
begin
raise MyError.new("my message", "my thing")
rescue => e
puts e.thing # "my thing"
end
इतना ही! रुबी में कस्टम त्रुटि या अपवाद बनाना वास्तव में मुश्किल नहीं है। जागरूक होने के लिए एक बात है। ध्यान दें कि उदाहरणों में हमें हमेशा StandardError से कैसे विरासत में मिला? यह जानबूझकर है। जबकि रुबी में एक अपवाद वर्ग है, आपको कभी भी इससे सीधे प्राप्त नहीं करना चाहिए। इसके बारे में अधिक जानकारी के लिए, अपवाद और मानक त्रुटि के बीच अंतर के बारे में हमारा लेख देखें