Если у вас есть метод с предложением throws
, то любой другой метод, который вызывает этот метод, должен либо обработать исключение (перехватывая его), либо бросить его, также имея предложение throws
для этого типаисключение (так что, в свою очередь, метод, который вызывает этот метод, должен сделать то же самое и т. д.).
Когда у метода main
есть предложение throws
, JVM позаботитсяперехвата исключения, и по умолчанию он просто напечатает трассировку стека исключения.
Если вы хотите выполнить специальную обработку, когда main
выдает исключение, вы можете установить обработчик необработанного исключения:
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.err.printf("Thread %s threw an uncaught exception!%n", t.getName());
e.printStackTrace();
}
});