Ловим exception внутри выражений
Илья • 28 января 2007 г.
Век живи, век учись.
Не так:if @user.name
@user.name.capitalize
else
"name not set"
end
И не так:
@user.name? ? @user.name.capitalize : "name not set"
И даже не так:
begin
@user.name.capitalize
rescue
"name not set"
end
А вот так:
@user.name.capitalize rescue "name not set"
Красота…
Update: Привёл немного не подходящий пример в прошлый раз: @user.name обычно не возвращает исключение, поэтому этот метод тут не поможет.
Another update: На самом деле этот хак не стоит воспринимать слишком серьёзно. Есть большая вероятность того, что вы не поймаете какое-нибудь действительно важное исключение, которого вы не ожидали.
5 комментариев:
Извините, но комментарии для этой статьи уже закрыты.

Супер, спасибо за совет!
Сильно. Кто бы мог подумать.
А если так?
@user.name || “name not set”
Это только в том случае, если не вылетает exception.
Я привёл плохой пример в этой заметке, так как обычно @user.name возвращает nil, а не exception…
Действительно красиво.