class DTK::Client::Error
Constants
- GENERIC_ERROR_RETURN_CODE
- NO_BACKTRACE
Public Class Methods
new(msg = '', opts = {})
click to toggle source
opts can have keys
:backtrace - if want backtrace of nested error
Calls superclass method
# File lib/client/error.rb, line 24 def initialize(msg = '', opts = {}) super(msg) @backtrace = opts[:backtrace] end
raise_if_error_info(response, opts = {})
click to toggle source
# File lib/client/error.rb, line 63 def self.raise_if_error_info(response, opts = {}) # check for errors in response error = response.error_info?(opts) return unless error # if error_internal.first == true case error.code when :unauthorized raise self, "[UNAUTHORIZED] Your session has been suspended, please log in again." when :session_timeout raise self, "[SESSION TIMEOUT] Your session has been suspended, please log in again." when :broken raise self, "[BROKEN] Unable to connect to the DTK server at host: #{Config[:server_host]}" when :forbidden raise self, "[FORBIDDEN] Access not granted, please log in again." when :timeout raise self, "[TIMEOUT ERROR] Server is taking too long to respond." when :connection_refused raise self, "[CONNECTION REFUSED] Connection refused by server." when :resource_not_found raise self, "[RESOURCE NOT FOUND] #{error.msg}" when :pg_error raise self, "[PG_ERROR] #{error.msg}" when :server_error # Unless explicit backtrace given we dont want to use as backtace where error detected on client raise Server.new(error.msg, :backtrace => NO_BACKTRACE) when :client_error raise Client.new(error.msg, :backtrace => error.backtrace) else # if usage error occurred, display message to console and display that same message to log raise Usage.new(error.msg) end end
top_level_trap_error() { || ... }
click to toggle source
returns return code
# File lib/client/error.rb, line 31 def self.top_level_trap_error(&body) begin yield rescue InvalidConnection => e e.print_warning puts "\nDTK will now exit. Please set up your connection properly and try again." GENERIC_ERROR_RETURN_CODE rescue Error => e # If vanilla error treat like client error if e.class == Error e = convert_to_client_error(e) end Logger.instance.error_pp(e.message, e.backtrace?) GENERIC_ERROR_RETURN_CODE rescue Exception => exception # If treat like client error e = convert_to_client_error(exception) Logger.instance.error_pp(e.message, e.backtrace?) GENERIC_ERROR_RETURN_CODE end end
Private Class Methods
convert_to_client_error(e)
click to toggle source
# File lib/client/error.rb, line 99 def self.convert_to_client_error(e) Client.new(e.message, :backtrace => e.backtrace) end
Public Instance Methods
backtrace?()
click to toggle source
# File lib/client/error.rb, line 55 def backtrace? if @backtrace @backtrace unless @backtrace == NO_BACKTRACE else backtrace end end