Вам нужно будет окружить этот оператор блоком try/catch
, поскольку он использует кэшированное исключение.По сути, это означает, что компилятор будет гарантировать, что у вас есть какой-то способ обработки того, что происходит в случае возникновения ошибки, чтобы избежать недружественного экрана сбоя, отображаемого для пользователей.
В вашем случае вы должны сделать что-то вроде:
animal p1 = new animal();
animal p2 = new dog();
try {
System.out.println(p2.getClass().getDeclaredMethod("getTitle"));
} catch(NoSuchMethodException e) {
// error handling in the case getTitle() doesn't exit
}
Если вы вообще не хотите обрабатывать исключения и предпочитаете просто передавать их, не прося компилятор проверять их, вы можете заключить весь свой код в следующее:
try {
// ...
} catch(Exception e) {
throw new RuntimeException(e);
}
Однако, как правило, это не очень хорошая практика Java.