Method: Exception.from_hash

Defined in:
lib/openc3/io/json_rpc.rb

.from_hash(hash) ⇒ Object



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/openc3/io/json_rpc.rb', line 160

def self.from_hash(hash)
  begin
    # Get Error class handling namespaced constants
    split_error_class_name = hash['class'].split("::")
    error_class = Object
    split_error_class_name.each do |name|
      error_class = error_class.const_get(name)
    end
  rescue
    error = OpenC3::JsonDRbUnknownError.new(hash['message'])
    error.set_backtrace(hash['backtrace'].concat(caller()))
    raise error
  end
  error = error_class.new(hash['message'])
  error.set_backtrace(hash['backtrace'].concat(caller())) if hash['backtrace']
  hash['instance_variables'].each do |name, value|
    error.instance_variable_set(name.intern, value)
  end
  error
end