রুবিতে আপনার নিজস্ব ব্যতিক্রম তৈরি করা সহজ। শুধু এই ধাপগুলি অনুসরণ করুন:
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 থেকে উত্তরাধিকারসূত্রে পেয়েছি? এটা ইচ্ছাকৃত। রুবিতে একটি ব্যতিক্রম শ্রেণী থাকলেও, আপনার কখনই এটি থেকে সরাসরি উত্তরাধিকারী হওয়া উচিত নয়। এই সম্পর্কে আরও তথ্যের জন্য, ব্যতিক্রম এবং StandardError
এর মধ্যে পার্থক্য সম্পর্কে আমাদের নিবন্ধটি দেখুন