context = V8::Context.new(timeout: 20000) do |context|
context['ForbidAccess'] = ->(message) { throw NotImplementedError }
end
begin
context.eval("ForbidAccess();")
rescue => e
puts "e.class = #{e.class.name}"
puts "e.causes = #{e.causes}"
puts "e.root_cause = #{e.root_cause}"
puts "e.root_cause.class = #{e.root_cause.class}"
end
控制台输出:
e.class = V8::Error
e.causes = [#<V8::Error: uncaught throw NotImplementedError>, #<ArgumentError: uncaught throw NotImplementedError>]
e.root_cause = uncaught throw NotImplementedError
e.root_cause.class = ArgumentError
如何访问 NotImplementedError 对象?
(NotImplementedError 只是为了展示。它将被包含消息等的自定义异常替换。)