class Exception
Public Instance Methods
full_message(options = {}, &block)
click to toggle source
Returns the full exception message, with backtrace, like the one we get from the Ruby interpreter when the program is aborted (well, almost like that)
For instance,
def test raise RuntimeError, "this is a test" rescue puts $!.full_message end test
displays
test.rb:3:in `test': this is a test (RuntimeError) from test.rb:7
Two regular expressions can be given through the options
hash to filter the backtrace:
- since
-
Only the methods below the first matching line will be displayed. The matching line is included.
- until
-
Only the methods above the first matching line will be displayed. The matching line is not included
If a block is given, each line of the backtrace are yield and only the lines for which the block returns true are displayed
# File lib/utilrb/exception/full_message.rb, line 31 def full_message(options = {}, &block) options = validate_options options, [:since, :until] since_matches, until_matches = options[:since], options[:until] trace = backtrace if since_matches || until_matches found_beginning, found_end = !since_matches, false trace = trace.find_all do |line| found_beginning ||= (line =~ since_matches) found_end ||= (line =~ until_matches) if until_matches found_beginning && !found_end end end first, *remaining = if block_given? then trace.find_all(&block) else trace end msg = "#{first}: #{message} (#{self.class})" unless remaining.empty? msg << "\n\tfrom " + remaining.join("\n\tfrom ") end msg end