Хочу, чтобы try блок был выражением.
final Foo foo = try {
computeFoo();
} catch (SomeException e) {
// handle the error
}
Можно обойтись возвратом Pair или смастерить свой Either, но без нормальной поддержки алгебраических типов все равно ведь ничего хорошего не выйдет. А пока продолжаем писать в стиле
Foo foo;
try {
foo = computeFoo();
}
(
Read more... )
Comments 10
http://ideone.com/ZJih3Q
Reply
Reply
Reply
Reply
final пишется так:
Foo blah;
try {
blah = computeFoo();
}catch(Exception e){
// not blah
}
final Foo foo = blah;
В теле метода разница не очень ясна, а в конструкторе или static initializer имеет смысл.
Reply
final Foo foo = () -> {
try {
computeFoo();
} catch (SomeException e) {
// handle the error
}
}
Не компилировал, но по документации должно работать. С поправкой на возможную необходимость расстановки дополнительных final для переменных в outer scope. Ждем Java 6 в продакшне.
P.S. return там можно ставить, а можно и нет. Свобода-с.
Reply
Leave a comment