Присвойте последнюю переменную в блоке попытки

Очень короткий вопрос: Есть ли более изящный способ сделать это:

Object tmp;
try {
 tmp = somethingThatCanFail();
} catch (Fail f) {
 tmp = null;
}
final Object myObject = tmp;
// now I have a final myObject, which can be used in anonymous classes
8
задан Bart van Heukelom 15 June 2010 в 12:48
поделиться

2 ответа

Вы можете извлечь создание значения в его собственном методе:

final Object myObject = getObjectOrNull();

public Object getObjectOrNull() {
  try{
    return somethingThatCanFail();
  } catch (Fail f) {
    return null;
  }
}

Это длиннее, но в зависимости от вашего определения «элегантного» это может быть более элегантный.

12
ответ дан 5 December 2019 в 14:00
поделиться

Зависит от того, что вы подразумеваете под "этим" (и "более элегантным")

Я не уверен, почему вы думаете, что вам нужны tmp И myObject, но нет никакого способа избежать их этих объявлений вне блока try, ЕСЛИ вы хотите получить к нему доступ в блоке catch.

Что не так с

Object myObject = null;
try {
  myObject = somethingThatCanFail();
} catch (Fail f) {
  // do nothing because we can deal with myObject being null just fine
}
0
ответ дан 5 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: