7. Где не использовать методы,
генерирующие исключения
• По возможности везде!
• Так или иначе, нам не избавиться от
случаев, когда без исключений не
обойтись
8. За что мы любим Ruby?
File.open('testfile') do |file|
while line = file.readline
puts line
end
rescue EOFError
return
end
Любили бы мы Ruby за это?
9. За что мы любим Ruby?
File.open('testfile') do |file|
while line = file.gets
puts line
end
end
Мы любим Ruby за это:
10. Примеры исключительных
ситуаций
• Потеря соединения с базой данных
• Переполнение памяти
• Ошибка чтения/записи сокета
Случаи, возникающие вследствии пользовательского
ввода НЕ являются исключительными ситуациями!
11. Должны ли мы отлавливать
исключительные ситуации?
• Все зависит от типа приложения и его
требований
• В большинстве случаев нет
• Любая строчка в коде может вызвать
исключение. Отлавливать все?
15. Где может быть полезен
inline rescue?
val_or_error = {}.fetch(:name) rescue $!
val_or_error
#=> #<KeyError: key not found: :name>
Ловим исключение и анализируем его: