У меня есть эти два метода:Java генериков с исключениями производства ошибки компиляции времени
private static <T extends Throwable> void methodWithExceptionGeneric(final T t) throws T {
throw t;
}
private static void methodWithExceptionNonGeneric(final Throwable t) throws Throwable {
throw t;
}
Когда я называю эти методы, как так:
methodWithExceptionGeneric(new IllegalArgumentException());
methodWithExceptionNonGeneric(new IllegalArgumentException()); // compile time error
Я получаю компиляции ошибки времени в не общий метод говоря, что у меня есть необработанное исключение в моем основном методе, и мне нужно либо объявить инструкцию throw, либо уловить исключение.
Мой вопрос: почему он только жалуется на не общий метод? На мой взгляд, общий метод также бросает исключение, поэтому не следует также обращаться с ним?
Знаете ли вы о проверенных и непроверенных исключениях? Что такое 'IllegalArgumentException'? –
@SotiriosDelimanolis Я не знаю – Ogen
@Ogen, а затем google it, проверьте документы: http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html и убедитесь, что он расширяет 'java.lang.RuntimeException' – alfasin