在这个类中救援NameError

时间:2013-01-13 12:03:04

标签: ruby exception rescue

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

1 个答案:

答案 0 :(得分:2)

您无需再次将所有内容打包到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初始化程序中捕获异常?