Может быть так ...
$numRows = $conn->query("SELECT COUNT(*) FROM yourtable")->fetchColumn();
echo $numRows;
Предполагая, что вы не можете изменить функцию так, чтобы она возвращала значение null, когда свойство не найдено, вы как бы застряли, заключая все в отдельный блок try catch, особенно если вы хотите для каждого значения, которое может быть извлечено для извлечения (в отличие от того, чтобы позволить первому значению, которое не удалось отменить всю операцию).
Если у вас есть много этих свойств для извлечения, возможно, было бы лучше написать вспомогательный метод использовать:
String getPropertySafely(String key) {
try {
return getProperty(key);
} catch (Exception e) {
return null;
}
}
Так как вы используете одну и ту же функцию каждый раз, вы можете поместить ее в цикл:
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) {
}
}
, но это довольно надумано и будет полезно только для большого количества свойств.
Вы должны поместить пробную ловушку вокруг каждого оператора. Нет продолжения (как в блоках 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 ()
- плохой кандидат для выдачи исключений только для всего этого необходимого дополнительного шаблона
Вам следует пересмотреть способ обработки getProperty
, если вы планируете использовать многие из них, потому что для этого нет простого способа.
Вы можете использовать оператор finally
, но вам все равно потребуется try-catch
для каждого вызова.