Sha256: 22721ee64f2c0664402a458b592c81dc8a157ac7fd372dcce804890a5e9f6850

Contents?: true

Size: 1.56 KB

Versions: 17

Compression:

Stored size: 1.56 KB

Contents

# Some helper methods for throwing errors.
module Puppet::Util::Errors
  # Throw a dev error.
  def devfail(msg)
    self.fail(Puppet::DevError, msg)
  end

  # Add line and file info if available and appropriate.
  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

  def error_context
    if file and line
      " at #{file}:#{line}"
    elsif line
      " at line #{line}"
    elsif file
      " in #{file}"
    else
      ""
    end
  end

  # Wrap a call in such a way that we always throw the right exception and keep
  # as much context as possible.
  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

  # Throw an error, defaulting to a Puppet::Error.
  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
end

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
librarian-puppet-0.9.9 vendor/gems/ruby/1.9.1/gems/puppet-3.1.0/lib/puppet/util/errors.rb
puppet-3.1.1 lib/puppet/util/errors.rb
librarian-puppet-0.9.8 vendor/gems/ruby/1.9.1/gems/puppet-3.1.0/lib/puppet/util/errors.rb
puppet-3.1.0 lib/puppet/util/errors.rb
puppet-3.1.0.rc2 lib/puppet/util/errors.rb
puppet-3.1.0.rc1 lib/puppet/util/errors.rb
puppet-3.0.2 lib/puppet/util/errors.rb
puppet-3.0.2.rc3 lib/puppet/util/errors.rb
puppet-3.0.2.rc2 lib/puppet/util/errors.rb
puppet-3.0.2.rc1 lib/puppet/util/errors.rb
puppet-3.0.1 lib/puppet/util/errors.rb
puppet-3.0.1.rc1 lib/puppet/util/errors.rb
puppet-3.0.0 lib/puppet/util/errors.rb
puppet-3.0.0.rc8 lib/puppet/util/errors.rb
puppet-3.0.0.rc7 lib/puppet/util/errors.rb
puppet-3.0.0.rc5 lib/puppet/util/errors.rb
puppet-3.0.0.rc4 lib/puppet/util/errors.rb