class RLP::Error::ObjectDeserializationError

Exception raised if deserialization by a {RLP::Sedes::Serializable} fails.

Attributes

sedes[RW]

Public Class Methods

new(message: nil, serial: nil, sedes: nil, list_exception: nil) click to toggle source

@param sedes [RLP::Sedes::Serializable] the sedes that failed @param list_exception [RLP::ListDeserializationError] exception raised

by the underlying list sedes, or `nil` if no such exception has been
raised
Calls superclass method RLP::Error::DeserializationError::new
# File lib/rlp/error.rb, line 125
def initialize(message: nil, serial: nil, sedes: nil, list_exception: nil)
  if message.nil?
    raise ArgumentError, "list_exception must be present" if list_exception.nil?

    if list_exception.element_exception
      raise ArgumentError, "sedes must be present" if sedes.nil?

      field = sedes.serializable_fields.keys[list_exception.index]
      message = "Deserialization failed because of field #{field} ('#{list_exception.element_exception}')"
    else
      field = nil
      message = "Deserialization failed because of underlying list ('#{list_exception}')"
    end
  end

  super(message, serial)

  @sedes = sedes
  @field = field
  @list_exception = list_exception
end