# File lib/main/base.rb, line 454
    def handle_exception e
      if e.respond_to?(:error_handler_before)
        fcall(e, :error_handler_before, self)
      end

      if e.respond_to?(:error_handler_instead)
        fcall(e, :error_handler_instead, self)
      else
        if e.respond_to? :status
          exit_status(( e.status ))
        end

        if Softspoken === e or SystemExit === e
          quiet = ((SystemExit === e and e.message.respond_to?('abort')) or # see main/stdext.rb
                  (SystemExit === e and e.message == 'exit'))
          stderr.puts e.message unless quiet
        else
          fatal{ e }
        end
      end

      if e.respond_to?(:error_handler_after)
        fcall(e, :error_handler_after, self)
      end

      exit_status(( exit_failure )) if exit_status == exit_success
      exit_status(( Integer(exit_status) rescue(exit_status ? 0 : 1) ))
      exit exit_status
    end