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 例外と、5 行目にロードされたものもレスキューされます。MyModule::MyClass の例外のみをレスキューし、5 行目で初期化されている例外はレスキューしないようにするにはどうすればよいですか? ありがとう!

4

1 に答える 1

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イニシャライザからの例外をキャッチしたくありません か?

于 2013-01-13T12:14:34.077 に答える