игнорирование ошибок и продолжение в рубине - PullRequest
0 голосов
/ 28 февраля 2010

всякий раз, когда вызывается исключение, сценарий завершается.

Должен ли я прибегать к каждому действию? быстро становится очень сложно .....

begin
#someaction

begin
#someaction2
rescue
end
rescue
end

Ответы [ 2 ]

1 голос
/ 01 марта 2010

Сложно дать конкретный ответ, потому что я не знаю, что делает ваша программа.

Но в общих чертах я считаю, что лучший способ справиться с этим - поместить код, который может дать сбой, в один или несколько отдельных методов (и, возможно, имя метода должно отражать это).

Это имеет ряд преимуществ. Прежде всего, это означает, что остальная часть вашего кода не должна хеджироваться с обработкой исключений; во-вторых, если «опасные» действия тщательно разделены на логические группы, вы можете выполнять обработку исключений в методе, а не в реальных действиях. Глупый пример:

my_list = get_list("one") # perfectly safe method

my_list.each do |x|
    begin
        x.dangerous_file_method()  # dangerous method
    rescue
        x.status = 1
    end
end    
1 голос
/ 28 февраля 2010

Вы можете использовать какой-то механизм AOP для окружения каждого вызова метода кодом обработки исключений (например, Aquarium: http://aquarium.rubyforge.org/), или поставить спасательный ноль после каждой строки кода, но я предполагаю, что если вам нужно Сделайте это, тогда возникшие исключения на самом деле не сигнализируют об исключительных ситуациях в вашем приложении (что плохо), или вы хотите попытаться продолжить работу даже в ситуации, когда на самом деле нет смысла делать это (что еще хуже). Я бы посоветовал вам пересмотреть то, что вам действительно нужно сделать, потому что мне кажется, что вы подходите к проблеме неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...