Из какой-либо эти методы ControlPaint , полезные для этого? Это - то, что я обычно использую для пользовательски представленных средств управления.
Вероятно, самый важный из них: никогда не проглатывать проверенное исключение . Под этим я подразумеваю: не делайте этого:
try {
...
} catch (IOException e) {
}
, если только вы этого не хотите . Иногда люди проглатывают проверенные исключения, потому что они не знают, что с ними делать, или не хотят (или не могут) загрязнять свой интерфейс предложениями "throws Exception".
Если вы не знаете, что делать с ним сделайте это:
try {
...
} catch (IOException e) {
throw new RuntimeException(e);
}
Другой вопрос, который приходит на ум, - убедиться, что вы имеете дело с исключениями. Чтение файла должно выглядеть примерно так:
FileInputStream in = null;
try {
in = new FileInputStream(new File("..."));;
// do stuff
} catch (IOException e) {
// deal with it appropriately
} finally {
if (in != null) try { in.close(); } catch (IOException e) { /* swallow this one */ }
}
Зависит от того, над чем вы работаете.
если вы разрабатываете API для использования кем-то другим, лучше повторно выбросить исключение или обернуть его в собственное исключение и выбросить.
Тогда как если вы разрабатываете приложение для конечного пользователя, вам необходимо обработать это исключение и сделать необходимое.
Если вы пишете очередь диспетчера, то к тому времени, как исключение вернется к вам, нет смысла делать с ним что-либо, кроме регистрации. . Очередь событий Swing имеет в основном такой же тип поведения.
В качестве альтернативы вы можете предоставить ловушку для «обработчика неперехваченных исключений», подобную ThreadGroup . Имейте в виду, что обработчик может занять много времени и в конечном итоге задержать ваш диспетчер.
Что касается InterruptedException: единственное, что касается этого, - это ваш цикл диспетчеризации, который должен проверять какое-то внешнее состояние, чтобы убедиться, что оно должен прекратить обработку.