This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
Raising an Exception (written by Steve Arneil) | ||
---|---|---|
Code | Expected | Actual |
def raise_exception puts 'I am before the raise.' raise 'An error has occurred.' puts 'I am after the raise.' end raise_exception |
I am before the raise. RuntimeError: An error has occurred |
Error! (Exception?) Here's stdout: I am before the raise. RuntimeError: An error has occurred. from (irb):3:in `raise_exception' from (irb):6 |
def inverse(x) raise "Argument is not numeric" unless x.is_a? Numeric 1.0 / x end inverse(2) |
0.5 | 0.5 |
inverse('not a number') |
RuntimeError: Argument is not numeric ... |
RuntimeError: Argument is not numeric from (irb):8:in `inverse' from (irb):12 |
ObjectSpace.each_object(Class) do |x| puts x if x.ancestors.member? Exception end ObjectSpace.each_object(Class) { |x| puts x if x.name =~ /Error$/ } |
SystemStackError LocalJumpError EOFError IOError RegexpError ... |
Exception2MessageMapper::ErrNotRegisteredException IRB::Abort SystemStackError LocalJumpError EOFError IOError RegexpError Errno::EDQUOT Errno::EREMOTEIO Errno::EISNAM Errno::ENAVAIL Errno::ENOTNAM Errno::EUCLEAN Errno::ESTALE Errno::EINPROGRESS Errno::EALREADY Errno::EHOSTUNREACH Errno::EHOSTDOWN Errno::ECONNREFUSED Errno::ETIMEDOUT Errno::ETOOMANYREFS Errno::ESHUTDOWN Errno::ENOTCONN Errno::EISCONN Errno::ENOBUFS Errno::ECONNRESET Errno::ECONNABORTED Errno::ENETRESET Errno::ENETUNREACH Errno::ENETDOWN Errno::EADDRNOTAVAIL Errno::EADDRINUSE Errno::EAFNOSUPPORT Errno::EPFNOSUPPORT Errno::EOPNOTSUPP Errno::ESOCKTNOSUPPORT Errno::EPROTONOSUPPORT Errno::ENOPROTOOPT Errno::EPROTOTYPE Errno::EMSGSIZE Errno::EDESTADDRREQ Errno::ENOTSOCK Errno::EUSERS Errno::ESTRPIPE Errno::ERESTART Errno::EILSEQ Errno::ELIBEXEC Errno::ELIBMAX Errno::ELIBSCN Errno::ELIBBAD Errno::ELIBACC Errno::EREMCHG Errno::EBADFD Errno::ENOTUNIQ Errno::EOVERFLOW Errno::EBADMSG Errno::EDOTDOT Errno::EMULTIHOP Errno::EPROTO Errno::ECOMM Errno::ESRMNT Errno::EADV Errno::ENOLINK Errno::EREMOTE Errno::ENOPKG Errno::ENONET Errno::ENOSR Errno::ETIME Errno::ENODATA Errno::ENOSTR Errno::EBFONT Errno::EBADSLT Errno::EBADRQC Errno::ENOANO Errno::EXFULL Errno::EBADR Errno::EBADE Errno::EL2HLT Errno::ENOCSI Errno::EUNATCH Errno::ELNRNG Errno::EL3RST Errno::EL3HLT Errno::EL2NSYNC Errno::ECHRNG Errno::EIDRM Errno::ENOMSG Errno::ELOOP Errno::ENOTEMPTY Errno::ENOSYS Errno::ENOLCK Errno::ENAMETOOLONG Errno::EDEADLK Errno::ERANGE Errno::EDOM Errno::EPIPE Errno::EMLINK Errno::EROFS Errno::ESPIPE Errno::ENOSPC Errno::EFBIG Errno::ETXTBSY Errno::ENOTTY Errno::EMFILE Errno::ENFILE Errno::EINVAL Errno::EISDIR Errno::ENOTDIR Errno::ENODEV Errno::EXDEV Errno::EEXIST Errno::EBUSY Errno::ENOTBLK Errno::EFAULT Errno::EACCES Errno::ENOMEM Errno::EAGAIN Errno::ECHILD Errno::EBADF Errno::ENOEXEC Errno::E2BIG Errno::ENXIO Errno::EIO Errno::EINTR Errno::ESRCH Errno::ENOENT Errno::EPERM FloatDomainError ZeroDivisionError ThreadError SystemCallError NoMemoryError SecurityError RuntimeError NotImplementedError LoadError SyntaxError ScriptError NoMethodError NameError RangeError IndexError ArgumentError TypeError StandardError Interrupt SignalException fatal SystemExit Exception RubyLex::TerminateLineInput RubyLex::SyntaxError RubyLex::TkReading2TokenDuplicateError RubyLex::TkSymbol2TokenNoKey RubyLex::TkReading2TokenNoKey RubyLex::AlreadyDefinedToken IRB::SLex::ErrNodeAlreadyExists IRB::SLex::ErrNodeNothing IRB::Notifier::ErrUnrecognizedLevel IRB::Notifier::ErrUndefinedNotifier IRB::UndefinedPromptMode IRB::CantChangeBinding IRB::CantShiftToMultiIrbMode IRB::NoSuchJob IRB::IrbSwitchedToCurrentThread IRB::IrbAlreadyDead IRB::IllegalParameter IRB::CantReturnToNormalMode IRB::NotImplementedError IRB::UnrecognizedSwitch Timeout::Error SocketError SystemStackError LocalJumpError EOFError IOError RegexpError FloatDomainError ZeroDivisionError ThreadError SystemCallError NoMemoryError SecurityError RuntimeError NotImplementedError LoadError SyntaxError ScriptError NoMethodError NameError RangeError IndexError ArgumentError TypeError StandardError RubyLex::SyntaxError RubyLex::TkReading2TokenDuplicateError RubyToken::TkError IRB::NotImplementedError Timeout::Error SocketError |
def inverse(x) raise ArgumentError, 'Argument is not numeric' unless x.is_a? Numeric 1.0 / x end class NotInvertibleError < StandardError end def inverse(x) raise NotInvertibleError, 'Argument is not numeric' unless x.is_a? Numeric 1.0 / x end inverse('not a number') |
NotInvertibleError: Argument is not numeric ... |
NotInvertibleError: Argument is not numeric from (irb):24:in `inverse' from (irb):27 |