# module Puppet::Util::Errors

Some helper methods for throwing errors.

### Public Instance Methods

adderrorcontext(error, other = nil) click to toggle source

Add line and file info if available and appropriate.

    # File lib/puppet/util/errors.rb, line 9
    def adderrorcontext(error, other = nil)
      error.line ||= self.line if error.respond_to?(:line=) and self.respond_to?(:line) and self.line
      error.file ||= self.file if error.respond_to?(:file=) and self.respond_to?(:file) and self.file

      error.set_backtrace(other.backtrace) if other and other.respond_to?(:backtrace)

      error
    end

devfail(msg) click to toggle source

Throw a dev error.

    # File lib/puppet/util/errors.rb, line 4
    def devfail(msg)
      self.fail(Puppet::DevError, msg)
    end

error_context() click to toggle source

    # File lib/puppet/util/errors.rb, line 18
    def error_context
      if file and line
        " at #{file}:#{line}"
      elsif line
        " at line #{line}"
      elsif file
        " in #{file}"
      else
        ""
      end
    end

exceptwrap(options = {}) { || ... } click to toggle source

Wrap a call in such a way that we always throw the right exception and keep as much context as possible.

    # File lib/puppet/util/errors.rb, line 32
    def exceptwrap(options = {})
      options[:type] ||= Puppet::DevError
      begin
        return yield
      rescue Puppet::Error => detail
        raise adderrorcontext(detail)
      rescue => detail
        message = options[:message] || "#{self.class} failed with error #{detail.class}: #{detail}"

        error = options[:type].new(message)
        # We can't use self.fail here because it always expects strings,
        # not exceptions.
        raise adderrorcontext(error, detail)
      end

      retval
    end

fail(*args) click to toggle source

Throw an error, defaulting to a Puppet::Error.

    # File lib/puppet/util/errors.rb, line 51
    def fail(*args)
      if args[0].is_a?(Class)
        type = args.shift
      else
        type = Puppet::Error
      end

      error = adderrorcontext(type.new(args.join(" ")))

      raise error
    end