Как получить имя класса ruby ​​при возникновении исключения в Ruby - PullRequest
0 голосов
/ 13 марта 2019

Преодоление устаревшего приложения ruby, написанного в версии 1.8.7, для регистрации всех необработанных исключений, переопределяющих rescue_action_in_public на rescue_action_in_public_with_custom .Я вижу стек ошибок.Однако, если я смогу извлечь имя класса источника ошибок, это было бы очень полезно.Например -

module Module1
   module Module2
      class Trap
         raise 'exception raised and not handled'
         def do_something
            raise 'something happened in runtime and not handled'
         end
      end
   end
end

Я хочу записать имя класса "Trap" изнутри rescue_action_in_public_with_custom .Любая помощь / идеи приветствуются.

1 Ответ

1 голос
/ 13 марта 2019

Нужно подумать об использовании настраиваемого типа ошибки -

class ErrorsWithCallerClass < StandardError # or something more appropriate
    attr_reader :klass
    def initialize(msg, klass) 
       @klass = klass 
       super(msg)
    end
end

затем используйте это с

raise ErrorsWithCallerClass.new("bad stuff", Trap) 
...