mysql_num_rows () указывает количество строк, возвращаемых запросом базы данных. В вашем случае всегда возвращается одна строка, потому что всегда есть одна сумма. Конечно, сумма может быть 0.
Возможно, будет хорошей проверкой ваш запрос в браузере запросов mysql. Возможно, вы ищете что-то вроде этого?
SELECT name, SUM(students_money) AS sum_money
FROM students_table
GROUP BY name;
Это будет группировать суммы на основе имени. Чтобы пропустить 0 сум, вы можете добавить это:
HAVING sum_money > 0;
«и на самом деле - он всегда будет инициализирован (потому что программа завершится, если не может быть инициализирован).»
Как компилятор узнает об этом? Кроме того, если он всегда будет инициализирован, тогда зачем вообще использовать try-catch
? В твоей логике есть недостаток.
Вы можете переместить оставшуюся часть кода в блок try
. Это сработало бы.
Компилятор не знает, что программа завершит работу, если она не может быть инициализирована . Просто переместите оставшуюся часть кода в try.
public static void main (String[] args) {
try {
Config c = new Config();
final NetworkReporter np = new NetworkReporter(c.getValues().serverIP, c.getValues().serverPort, (short)(c.getValues().checkInterval * c.getValues().checksPerReport));
IdleChecker idleChecker = new IdleChecker(c.getValues().checkInterval, c.getValues().checksPerReport, c.getValues().idleSensitivity, new IdleChecker.reportFunction() {
public void report() {
np.report();
}
});
idleChecker.start();
} catch (Exception e) {
System.err.println("Error while parsing/reading file: " + e.getMessage());
System.exit(-1);
}
}
System.exit(-1)
Не гарантирует , что ваша программа остановится. Если у вас есть своего рода ловушка отключения , или если вы находитесь в середине потоковой операции, это можно предотвратить. Таким образом, компилятор выдает ошибку.
Возможно, вы захотите, чтобы Exception
покинул текущий слой.
Config c;
try {
c = new Config();
} catch (final Exception e) {
System.err.println("Error while parsing/reading file: " + e.getMessage());
throw new YourCustomRuntimeException(e);
}
c.whatever();