রুবিতে নিজস্ব এক্সেপশন তৈরি করা খুব সহজ। শুধু এই ধাপগুলো ফলো করুন:
১. একটি নতুন ক্লাস তৈরি করুন
রুবিতে এক্সেপশনগুলো সবকিছুর মতো ক্লাস! একটি নতুন টাইপের এক্সেপশন তৈরির জন্য, শুধু একটি ক্লাস তৈরি করুন যা StandardError বা এর চাইল্ড ক্লাস থেকে ইনহেরিট করে।
class MyError < StandardError
end
raise MyError
কনভেনশন অনুযায়ী, নতুন এক্সেপশনের ক্লাসের নাম "Error" দিয়ে শেষ হয়। ভালো অনুশীলন হলো আপনার কাস্টোম এক্সেপশনগুলো একটি মডিউলের ভিতরে রাখা। ফলে আপনার ফাইনাল এরর ক্লাসগুলো দেখাবে: ActiveRecord::RecordNotFound এবং Net::HTTP::ConnectionError।
২. একটি মেসেজ যোগ করুন
প্রতিটি রুবি এক্সেপশন অবজেক্টের একটি message অ্যাট্রিবিউট থাকে। এক্সেপশনের নামের পাশে প্রিন্ট হওয়া বড় টেক্সটটিই সেটা।
এক্সেপশনের message অ্যাট্রিবিউটের উদাহরণ।
আপনি এক্সেপশন উত্থাপন করার সময় মেসেজ নির্দিষ্ট করতে পারেন:
raise MyError, "My message"
এবং আপনার কাস্টোম এরর ক্লাসে একটি ডিফল্ট মেসেজ যোগ করতে পারেন কনস্ট্রাক্টর যোগ করে।
class MyError < StandardError
def initialize(msg="My default message")
super
end
end
৩. আপনার এক্সেপশনে কাস্টোম ডেটা অ্যাট্রিবিউট যোগ করুন
আপনি যেকোনো ক্লাসের মতো আপনার এক্সেপশনে কাস্টোম ডেটা যোগ করতে পারেন। আমরা আমাদের ক্লাসে একটি অ্যাট্রিবিউট রিডার যোগ করব এবং কনস্ট্রাক্টর আপডেট করব।
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 থেকে ইনহেরিট করেছি। সেটা ইচ্ছাকৃত। রুবিতে Exception ক্লাস থাকা সত্ত্বেও, আপনাকে কখনো সরাসরি Exception থেকে ইনহেরিট করা উচিত নয়। আরও জানতে আমাদের Exception এবং StandardError এর পার্থক্য সম্পর্কিত আর্টিকেল পড়ুন।