Зачем мне спасать исключения? - PullRequest
0 голосов
/ 11 февраля 2020

Существуют ли другие причины для обработки исключения с rescue, кроме того, что я не позволю моей программе обработать sh и продолжить работу?

1 Ответ

1 голос
/ 11 февраля 2020

Никто не заставляет вас спасать исключения. Вы можете позволить этому гореть, если хотите, и в некоторых ситуациях это совершенно жизнеспособная стратегия. Иногда лучше взломать sh, чем запутаться и продолжить, как будто ничего плохого не произошло.

В системах, где регистрируются исключения и процесс автоматически перезапускается, это может быть путь к go.

Последнее, что вы хотите сделать, это замять rescue, который не делает ничего, кроме неясных проблем или, что еще хуже, оставляет систему в нестабильном или нерабочем состоянии. Это эквивалентно отключению пожарной сигнализации, потому что она раздражает и время от времени издает звуковой сигнал. Однажды вам это понадобится, потому что происходит что-то серьезное.

В большинстве случаев исключения сообщают о чем-то полезном, они не являются неприятностью. Например:

class ConfigDataError < StandardError
  # Defines a custom exception class
end

def config_data(path)
  YAML.load(File.open(path))
rescue Errno::ENOENT
  # File is missing, no big deal.
  { }
rescue Psych::SyntaxError
  # This is a problem!
  raise ConfigDataError, "Invalid YAML in file #{path}"
end

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

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