Java: попробовать-поймать-продолжить?

Может быть так ...

$numRows = $conn->query("SELECT COUNT(*) FROM yourtable")->fetchColumn();
echo $numRows; 
13
задан Legend 25 November 2009 в 03:02
поделиться

4 ответа

Предполагая, что вы не можете изменить функцию так, чтобы она возвращала значение null, когда свойство не найдено, вы как бы застряли, заключая все в отдельный блок try catch, особенно если вы хотите для каждого значения, которое может быть извлечено для извлечения (в отличие от того, чтобы позволить первому значению, которое не удалось отменить всю операцию).

Если у вас есть много этих свойств для извлечения, возможно, было бы лучше написать вспомогательный метод использовать:

String getPropertySafely(String key) {
   try {
      return getProperty(key);
   } catch (Exception e) {
      return null;
   }
}
19
ответ дан 1 December 2019 в 01:30
поделиться

Так как вы используете одну и ту же функцию каждый раз, вы можете поместить ее в цикл:

String[] abc = new String[3];
String[] param = {"a", "b", "c"};
for (int i = 0; i < 3; i++) {
    try {
      abc[i] = getProperty(param[i]);
    } catch(Exception e) {

    }
}

, но это довольно надумано и будет полезно только для большого количества свойств.

5
ответ дан 1 December 2019 в 01:30
поделиться

Вы должны поместить пробную ловушку вокруг каждого оператора. Нет продолжения (как в блоках ON ERROR ... RESUME в VB). Вместо:

String a = null;
try {
  a = getProperty("a");
} catch(Exception e) {
  ...
}
String b = null;
try {
  b = getProperty("b");
} catch(Exception e) {
  ...
}
String c = null;
try {
  c = getProperty("c");
} catch(Exception e) {
  ...
}

вы можете написать:

public String getPropertyNoException(String name) {
  try {
    return getProperty(name);
  } catch (Exception e) {
    return null;
  }
}

Лично я считаю, что getProperty () - плохой кандидат для выдачи исключений только для всего этого необходимого дополнительного шаблона

8
ответ дан 1 December 2019 в 01:30
поделиться

Вам следует пересмотреть способ обработки getProperty , если вы планируете использовать многие из них, потому что для этого нет простого способа.

Вы можете использовать оператор finally , но вам все равно потребуется try-catch для каждого вызова.

3
ответ дан 1 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

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