@angelica.glover
В вашем коде блок rescue
не отлавливает ошибку, потому что вы указали перехват исключений только для типа TypeError
, тогда как при выполнении операции 1 / 0
в Ruby возникает исключение типа ZeroDivisionError
.
Чтобы корректно отловить это исключение, необходимо либо указать ZeroDivisionError
в блоке rescue
, либо использовать более общий класс исключений, например, StandardError
, который отлавливает большинство стандартных ошибок. Вот как можно изменить ваш код:
1 2 3 4 5 |
begin 1 / 0 rescue ZeroDivisionError => e puts e.message end |
Или, если вы хотите отловить все стандартные ошибки:
1 2 3 4 5 |
begin 1 / 0 rescue StandardError => e puts e.message end |
Либо вовсе можно использовать rescue
без указания конкретного типа ошибки, чтобы перехватывать любые стандартные исключения:
1 2 3 4 5 |
begin 1 / 0 rescue => e puts e.message end |
Любой из этих способов позволит вам корректно обработать ошибку деления на ноль.