# File lib/deltacloud/drivers/exceptions.rb, line 177 def self.exception_from_status(code, message) ExceptionDef.new(nil) { status code}.handler(StandardError.new(message)) end
# File lib/deltacloud/drivers/exceptions.rb, line 195 def self.exceptions(&block) @definitions ||= [] @definitions = Exceptions.new(&block).exception_definitions if block_given? @definitions end
# File lib/deltacloud/drivers/exceptions.rb, line 214 def self.included(klass) klass.extend(DSL) end
# File lib/deltacloud/drivers/exceptions.rb, line 209 def self.logger(logger=nil) @logger = logger @logger ||= ::Logger.new($stderr) end
# File lib/deltacloud/drivers/exceptions.rb, line 218 def safely(&block) begin block.call rescue => e self.class.exceptions.each do |definitions| next unless definitions.any? e if (new_exception = definitions.handler(e)) and new_exception.message message = new_exception.message end message ||= e.message raise definitions.handler(e) unless new_exception.nil? end raise BackendError.new(e, "Unhandled exception or status code (#{e.message})") end end