রুবিতে এক্সেপশনগুলো শুধু ক্লাস। এক্সেপশন হায়ারার্কি Exception ক্লাস থেকে ইনহেরিট করা সব ক্লাসের সমষ্টি।
নিচে রুবি ২.১-এর স্ট্যান্ডার্ড লাইব্রেরির এক্সেপশন হায়ারার্কি দেওয়া হলো:
Exception
NoMemoryError
ScriptError
LoadError
NotImplementedError
SyntaxError
SecurityError
SignalException
Interrupt
StandardError -- rescue-এর ডিফল্ট
ArgumentError
UncaughtThrowError
EncodingError
FiberError
IOError
EOFError
IndexError
KeyError
StopIteration
LocalJumpError
NameError
NoMethodError
RangeError
FloatDomainError
RegexpError
RuntimeError -- raise-এর ডিফল্ট
SystemCallError
Errno::*
ThreadError
TypeError
ZeroDivisionError
SystemExit
SystemStackError
ব্যবহারিক ব্যবহার
এক্সেপশনগুলো ক্লাস ট্রি আকারে সাজানো হয়েছে যাতে আপনি সহজে একই টাইপের এক্সেপশন রেসকিউ করতে পারেন।
উদাহরণস্বরূপ, নিচের কোডটি বিবেচনা করুন:
begin
do_something
rescue StandardError => e
end
এটি শুধু StandardError নয়, সেটা থেকে ইনহেরিট করা যেকোনো এক্সেপশনও রেসকিউ করবে। এটা প্রায়শই আপনার আগ্রহের সব এক্সেপশন কভার করে।
আপনার নিজস্ব কোডে, আপনি আপনার সব কাস্টোম এক্সেপশন একটি বেস ক্লাস থেকে ইনহেরিট করতে পারেন:
module MyLib
class Error < StandardError; end
class TimeoutError < Error; end
class ConnectionError < Error; end
end
...
begin
do_something
rescue MyLib::Error => e
# উপরে ডিফাইন করা যেকোনো এক্সেপশন রেসকিউ হবে
end