В этой заметке мы рассмотрим обработку ошибок и вызова exception
Блок обработки ошибок создаётся так:
- begin
- # здесь находится код, который должен выполнится, если он выполняется без ошибки
- # то код в rescue не используется
- rescue #имя_ошибки(к примеру ZeroDivisionError)
- # если же код выше произошёл с ошибой, то используется этот раздел
- end
Это мы и используем в своём классе MyError
- class MyError
- attr_accessor :val
- def initialize(value)
- begin
- @val = 10 / value
- rescue #имя_ошибки(к примеру ZeroDivisionError)
- puts “нельзя делить на нуль”
- raise #имя_ошибки(к примеру ZeroDivisionError) – вызывает Exception
- end
- end
- end
res = MyError.new(0)
Это вызывет ошибку, т.к. при создании класса мы идём в блок инициализации(initialize), а там мы делим val на 0, следовательно получаем ошибку, но т.к. мы используем обработку ошибок, то ошибки не будет. Мы переходим в раздел rescue и на экран выводится сообщение “нельзя делить на нуль”.
Обработку ошибок можно использовать для логирования.