# class REXML::ParseException

### Attributes

continued_exception[RW]
parser[RW]
source[RW]

### Public Class Methods

new( message, source=nil, parser=nil, exception=nil ) click to toggle source
Calls superclass method `Exception::new`

    # File lib/rexml/parseexception.rb, line 6
    def initialize( message, source=nil, parser=nil, exception=nil )
      super(message)
      @source = source
      @parser = parser
      @continued_exception = exception
    end

### Public Instance Methods

context() click to toggle source

    # File lib/rexml/parseexception.rb, line 48
    def context
      @source.current_line
    end

line() click to toggle source

    # File lib/rexml/parseexception.rb, line 43
    def line
      @source.current_line[2] if @source and defined? @source.current_line and
      @source.current_line
    end

position() click to toggle source

    # File lib/rexml/parseexception.rb, line 38
    def position
      @source.current_line[0] if @source and defined? @source.current_line and
      @source.current_line
    end

to_s() click to toggle source
Calls superclass method `Exception#to_s`

    # File lib/rexml/parseexception.rb, line 13
    def to_s
      # Quote the original exception, if there was one
      if @continued_exception
        err = @continued_exception.inspect
        err << "\n"
        err << @continued_exception.backtrace.join("\n")
        err << "\n...\n"
      else
        err = ""
      end

      # Get the stack trace and error message
      err << super

      # Add contextual information
      if @source
        err << "\nLine: #{line}\n"
        err << "Position: #{position}\n"
        err << "Last 80 unconsumed characters:\n"
        err << @source.buffer[0..80].force_encoding("ASCII-8BIT").gsub(/\n/, ' ')
      end

      err
    end