ব্যতিক্রম শুধুমাত্র রুবি ক্লাস. ব্যতিক্রম ব্যতিক্রম শ্রেণিবিন্যাসটি ব্যতিক্রম থেকে উত্তরাধিকারসূত্রে পাওয়া সমস্ত শ্রেণির সমন্বয়ে গঠিত।
রুবি 2.1-এর স্ট্যান্ডার্ড লাইব্রেরির জন্য এখানে একটি ব্যতিক্রম শ্রেণিবিন্যাস রয়েছে।
Exception
NoMemoryError
ScriptError
LoadError
NotImplementedError
SyntaxError
SecurityError
SignalException
Interrupt
StandardError -- default for rescue
ArgumentError
UncaughtThrowError
EncodingError
FiberError
IOError
EOFError
IndexError
KeyError
StopIteration
LocalJumpError
NameError
NoMethodError
RangeError
FloatDomainError
RegexpError
RuntimeError -- default for 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
# Rescues any of the exceptions defined above
end