【问题标题】:Rescue NameError just in this class仅在此类中救援 NameError
【发布时间】:2013-01-13 12:03:03
【问题描述】:

我有一个 Ruby 脚本,我正在这样做

module MyModule
    class MyClass
        def do_something
            begin
                deployer_object = Object.const_get("MyModule").const_get("#{class_name}Deployer").new(@config, @directory).deploy
            rescue NameError => e
                MyModule::Logger.error("Error loading the deployer #{class_name}. This deployer it's not installed!")
            end
        end
    end
end

现在它拯救了这个类中的所有 NameError 异常以及第五行中加载的异常。我怎样才能使它只挽救 MyModule::MyClass 中的异常,而不是在第 5 行初始化的异常?谢谢!

【问题讨论】:

    标签: ruby exception rescue


    【解决方案1】:

    您无需再次将所有内容打包在begin 中。这以相同的方式工作:

    module MyModule
        class MyClass
            def do_something
                deployer_object = Object.const_get("MyModule").const_get("#{class_name}Deployer").new(@config, @directory).deploy
            rescue NameError => e
                MyModule::Logger.error("Error loading the deployer #{class_name}. This deployer it's not installed!")
            end
        end
    end
    

    我不完全理解你的问题。你想拯救什么?您不想从Deployer's 初始化程序中捕获异常吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 2018-08-12
      • 2015-08-30
      • 2021-10-24
      • 1970-01-01
      • 2015-03-07
      相关资源
      最近更新 更多