Я новичок в java, и чтобы очистить «System.out», я прочитал соответствующий исходный код java, а затем найду то, что я не могу понять. Первый исходный код «System.out»:не нужно улавливать исключение при реализации System.out?
public final static PrintStream out = nullPrintStream();
тогда я пошел в nullPrintStream
private static PrintStream nullPrintStream() throws NullPointerException {
if (currentTimeMillis() > 0) {
return null;
}
throw new NullPointerException();
}
Мой вопрос: программа может бросить в функции nullPrintStream()
NullPointerException
, и мы needn» t, чтобы поймать исключение в public final static PrintStream out = nullPrintStream();
? Чтобы пояснить это, я написал несколько тестовых кодов в Eclipse, следующим образом:
package MainPackage;
public class Src {
private static int throwException() throws Exception{
int m = 1;
if(m == 0) {
throw new Exception();
}
return 0;
}
public static final int aTestObject = throwException(); <==Here i got an error
public static void main(String args[]) {
}
}
Так же, как я думаю, я получил сообщение об ошибке Unhandled тип исключения Exception, но почему System.out
нормально, не делая с NullPointerException
?
Спасибо, я получил it.But я получил еще один вопрос: если я придерживаться бросить 'Exception()' в 'частного статического Int throwException()', как я должен изменить 'публичный статический окончательный ИНТ aTestObject = throwException(); '? – Searene
См. Ответ Питера Лори. Если вам нужно проверенное исключение, используйте его статический инициализатор.Конечно, как вы справляетесь с этим, зависит от вас, он выбрал AssertionError, который является мудрым выбором - трудно восстановить из класса, который не инициализирован правильно! – corsiKa