2015-03-27 2 views
6

Рассмотрите приложение стойки. Я только хочу, чтобы обработать ошибку, если не работает тест:Можно ли использовать спасение с условным?

begin 
    do_something 

    if ENV[ 'RACK_ENV' ] != 'test' 
    rescue => error 
     handle_error error 
    end 
    end 
end 

Это создает syntax error, unexpected keyword_rescue (SyntaxError) rescue => error

Есть ли способ сделать это?

ответ

7

Не могли бы вы сделать что-нибудь подобное?

begin 
    do_something 

rescue => error 
    if ENV["RACK_ENV"] == "test" 
    raise error 
    else 
    handle_error error 
    end 
end 

Это будет повторное исключение, если вы не тестируете.

EDIT

Как @Max указывает, что вы можете быть немного более емким с этим.

begin 
    do_something 

rescue => error 
    raise if ENV["RACK_ENV"] == "test" 

    handle_error error 
end 
+0

Это было просто. –

+2

Если вы повторно поднимаете исключение внутри спасения, вам не нужно передавать аргумент: 'raise if ENV [" RACK_ENV "] ==" test "; handle_error error' – Max

+0

проблема заключается в том, что она меняет местоположение ошибки. – baash05

1

Вы всегда могли спасти его, то тогда либо обрабатывать или Rethrow в зависимости от вашего состояния

begin 
    do_something 
rescue => error 
    if ENV['RACK_ENV'] != 'test' 
    handle_error error 
    else 
    raise error 
    end 
end