Всем привет! Есть такой кусок кода -
if (!checkValidationCircle()) {
throw new NotCircleException("Круг не существует! Проверьте параметры круга!");
}
NotCircleException это мною созданное исключение, которое я наследовал от Exception, затем ловил его в try-catch и с помощью
System.out.println(e.getMessage())
выводил это сообщение в консоль. Теперь я решил отнаслдеовать мое исключение от RuntimeException и таким образом избавиься от try-catch, но НЕ ЗНАЮ ТЕПЕРЬ как сделать так, чтобы это сообщение так же хорошо выводилось в консоль, а не красной записью как теперь...
RuntimeException и все его дочерние классы это непроверяемые исключения (англ. unchecked exceptions), для них не является обязательным блок try-catch, но это не означает, что выполнение программы продолжится после возникновения этого исключения.
В вашем случае, после выбрасывания исключения NotCircleException, которое является unchecked, выводится StackTrace (точно так же, как если бы в catch блоки вы вызвали e.printStackTrace()) и выполнение текущего потока завершается.
Идея "избавления" от блока try-catch может быть ошибочной, так как если вам нужно обработать это исключение и вывести пользовательское сообщение, то вы должны использовать проверяемые исключения (англ. checked exception) и блок try-catch.
Из документации Oracle:
Generally speaking, do not throw a RuntimeException or create a subclass of RuntimeException simply because you don't want to be bothered with specifying the exceptions your methods can throw.
Here's the bottom line guideline: If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости