0

我有一个 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 行初始化的异常?谢谢!

4

1 回答 1

2

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

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初始化程序中捕获异常吗?

于 2013-01-13T12:14:34.077 回答