Блок многократного начала спасения

#ruby #error-handling #coding-style

Вопрос:

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

Я буду реализовывать это следующим образом

 begin
   code that might throw an exception
rescue
   logger
end

begin
   code that might throw an exception
rescue
   logger
end

begin
   code that might throw an exception
rescue
   logger
end

begin
   code that might throw an exception
rescue
   logger
end
 

есть ли лучший способ справиться с этим типом обработки ошибок, если да, пожалуйста, объясните, как я могу написать лучший код

Комментарии:

1. код, который может вызвать исключение, — это какая-то частная функция, уведомление honebadger, уведомление NewRelic

2. Исключения всплывают. Просто оберните весь свой код в одно начало/спасение. То, что вы делаете, не имеет абсолютно никакого смысла, тем более что существует огромная разница между ожидаемыми ошибками и истинными исключениями.

Ответ №1:

каждая строка может вызвать исключение

пожалуйста, объясните, как я могу написать лучший код

Вы можете написать лучший код, не проектируя его таким образом, чтобы каждая строка могла вызывать исключение. Особенно эта идея о том, что код должен «двигаться вперед, независимо от того, какие ошибки остаются на его пути».

В крайнем случае, ваш код может содержать всевозможные орфографические ошибки / недопустимые вызовы методов / что угодно, и предложенный вами дизайн попытается продолжить выполнение оставшейся части кода, независимо от того, насколько он нарушен.

Однако я не могу дать конкретных советов о том, как это сделать, не увидев какой-то реальный код.

Комментарии:

1. каждая строка отправляет информацию об ошибке с помощью какого-либо регистратора или какой-либо слабины или электронной почты, поэтому может возникнуть исключение, в противном случае я полностью согласен с вашим комментарием

2. Почему отправка информации регистратору/slack/электронной почте может привести к возникновению ИСКЛЮЧЕНИЯ ?? (Особенно исключение, которое вы можете смело игнорировать!!) Это плохой дизайн, и я повторяю вышеприведенный совет.

3. хорошо, я изучу это, чтобы лучше разработать свой код, спасибо