Exception: MultiJson::ParseError

Inherits:
StandardError
  • Object
show all
Defined in:
lib/multi_json/parse_error.rb

Overview

Raised when JSON parsing fails

Wraps the underlying adapter’s parse error with the original input data.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message = nil, data: nil, cause: nil) ⇒ ParseError

Create a new ParseError

Examples:

ParseError.new("unexpected token", data: "{invalid}", cause: err)

Parameters:

  • message (String, nil) (defaults to: nil)

    error message

  • data (String, nil) (defaults to: nil)

    the input that failed to parse

  • cause (Exception, nil) (defaults to: nil)

    the original exception



25
26
27
28
29
# File 'lib/multi_json/parse_error.rb', line 25

def initialize(message = nil, data: nil, cause: nil)
  super(message)
  @data = data
  set_backtrace(cause.backtrace) if cause
end

Instance Attribute Details

#dataString? (readonly)

The input string that failed to parse

Examples:

error.data  #=> "{invalid json}"

Returns:

  • (String, nil)

    the original input data



14
15
16
# File 'lib/multi_json/parse_error.rb', line 14

def data
  @data
end

Class Method Details

.build(original_exception, data) ⇒ ParseError

Build a ParseError from an original exception

Examples:

ParseError.build(JSON::ParserError.new("..."), "{bad json}")

Parameters:

  • original_exception (Exception)

    the adapter’s parse error

  • data (String)

    the input that failed to parse

Returns:

  • (ParseError)

    new error with formatted message



39
40
41
# File 'lib/multi_json/parse_error.rb', line 39

def self.build(original_exception, data)
  new(original_exception.message, data: data, cause: original_exception)
end