class Rhino::JSError
Public Class Methods
new(native)
click to toggle source
Calls superclass method
# File lib/rhino/error.rb, line 5 def initialize(native) @native = native # NativeException wrapping a Java Throwable if ( value = self.value(true) ) != nil super value.is_a?(Exception) ? "#{value.class.name}: #{value.message}" : value else super cause ? cause.details : @native end end
Public Instance Methods
backtrace()
click to toggle source
The backtrace is constructed using javascript_backtrace
+ the Ruby
part.
Calls superclass method
# File lib/rhino/error.rb, line 60 def backtrace if js_backtrace = javascript_backtrace js_backtrace.push(*super) else super end end
cause()
click to toggle source
Returns the (nested) cause of this error if any, most likely a #Rhino::JS::JavaScriptException instance.
# File lib/rhino/error.rb, line 26 def cause return @cause if defined?(@cause) if @native.respond_to?(:cause) && @native.cause @native.cause else @native.is_a?(JS::RhinoException) ? @native : nil end end
inspect()
click to toggle source
# File lib/rhino/error.rb, line 14 def inspect "#<#{self.class.name}: #{message}>" end
javascript_backtrace(keep_elements = false)
click to toggle source
Returns the JavaScript back-trace part for this error (the script stack).
# File lib/rhino/error.rb, line 69 def javascript_backtrace(keep_elements = false) if cause.is_a?(JS::RhinoException) cause.getScriptStack.map do |element| # ScriptStackElement[] keep_elements ? element : element.to_s end else nil end end
message()
click to toggle source
Returns the error message, in case of a native JavaScript value, will return that value converted to a String.
Calls superclass method
# File lib/rhino/error.rb, line 20 def message super.to_s # since 1.9.x message is expected to allways be a string end
unwrap()
click to toggle source
Attempts to unwrap the (native) JavaScript/Java exception.
# File lib/rhino/error.rb, line 36 def unwrap return @unwrap if defined?(@unwrap) cause = self.cause if cause && cause.is_a?(JS::WrappedException) e = cause.getWrappedException if e && e.is_a?(Java::OrgJrubyExceptions::RaiseException) @unwrap = e.getException else @unwrap = e end else @unwrap = nil end end
value(unwrap = false)
click to toggle source
Return the thown (native) JavaScript value.
# File lib/rhino/error.rb, line 52 def value(unwrap = false) return @value if defined?(@value) && ! unwrap @value = get_value unless defined?(@value) return @value.unwrap if unwrap && @value.respond_to?(:unwrap) @value end
Private Instance Methods
get_value()
click to toggle source
# File lib/rhino/error.rb, line 83 def get_value if ( cause = self.cause ) && cause.respond_to?(:value) cause.value # e.g. JavaScriptException.getValue elsif ( unwrap = self.unwrap ) && unwrap.respond_to?(:value) unwrap.value else nil end end