RuntimeException. Как вывести в консоль сообщение об ошибке?

166
08 ноября 2021, 06:10

Всем привет! Есть такой кусок кода -

if (!checkValidationCircle()) {
    throw new NotCircleException("Круг не существует! Проверьте параметры круга!");
}

NotCircleException это мною созданное исключение, которое я наследовал от Exception, затем ловил его в try-catch и с помощью

System.out.println(e.getMessage())

выводил это сообщение в консоль. Теперь я решил отнаслдеовать мое исключение от RuntimeException и таким образом избавиься от try-catch, но НЕ ЗНАЮ ТЕПЕРЬ как сделать так, чтобы это сообщение так же хорошо выводилось в консоль, а не красной записью как теперь...

Answer 1

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.

READ ALSO
Проект не подключается к PostgreSQL

Проект не подключается к PostgreSQL

Я написал datasourse файл и поместил его в deployment-каталог сервера WildFly туда же поместил JDBC драйвер

257
Четность соседей

Четность соседей

Решаю похожие задачи для отбора на стажировку в Яндекс, вроде решил задачу, но выдает WA (Wrong Answer)

105
Выборка внутри одной таблицы

Выборка внутри одной таблицы

В таблице есть 2 поля (product_id и category_id)Как должен выглядеть запрос, чтобы получить только те товары, которые принадлежат всем категориям в условии...

106
Кривой блок с необычной тенью

Кривой блок с необычной тенью

Как добиться эффекта который вы можете посмотреть нижеУ body фон другой, а у sidebar-a другой к тому же он имеет изогнутый вид и тень

249