Exception: Exception

Defined in:
lib/core/facets/exception/detail.rb,
lib/core/facets/exception/raised.rb,
lib/core/facets/exception/suppress.rb

Direct Known Subclasses

Lazy::DivergenceError

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.raised?Boolean

Does a block raise an a given exception.

Returns:

  • (Boolean)


5
6
7
8
9
10
11
12
# File 'lib/core/facets/exception/raised.rb', line 5

def self.raised? #:yeild:
  begin
    yield
    false
  rescue self
    true
  end
end

.suppress(*exception_classes) ⇒ Object

Supress errors while executing a block, with execptions.

CREDIT: David Heinemeier Hansson, Thomas Sawyer



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/core/facets/exception/suppress.rb', line 7

def self.suppress(*exception_classes)
  exception_classes.each do |e|
    unless e < self
      raise ArgumentError, "exception #{e} not a subclass of #{self}"
    end
  end
  exception_classes = [self] | exception_classes
  begin
    yield
  rescue Exception => e
    raise unless exception_classes.any? { |cls| e.kind_of?(cls) }
  end
end

Instance Method Details

#detailObject

Pretty string output of exception/error object useful for helpful debug messages.

Input: The Exception/StandardError object

Output: The pretty printed string

CREDIT: George Moschovitis



14
15
16
17
18
19
20
# File 'lib/core/facets/exception/detail.rb', line 14

def detail
  if backtrace
    %{#{self.class.name}: #{message}\n  #{backtrace.join("\n  ")}\n  LOGGED FROM: #{caller[0]}}
  else
    %{#{self.class.name}: #{message}\n  LOGGED FROM: #{caller[0]}}
  end
end