 
 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 |