powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Подскажите про логирование и обработку эксепшенов простого приложения
4 сообщений из 4, страница 1 из 1
Подскажите про логирование и обработку эксепшенов простого приложения
    #38523996
drcosmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую всех!

Я в джаве новичок, потому прошу не смеяться :)

При построении приложения какого-нибудь легкого уровня типа запись в бд+вывод на экран, как правильно делать эксепшены и логирование этих самых эксепшенов?


P.S.:
Мне думается, что надо так: создаем свой собственный класс MyException, наследуемый от Exception, затем в блоках try {...} catch обрабатываемых исключений вызываем наше исключение throw new MyException("Что-то здесь пишется"). Потом создается класс-логгер, пишущий в какой-то файл, и в классе MyException создается его экземпляр и производится логирование. Я правильно понимаю суть или не очень?
...
Рейтинг: 0 / 0
Подскажите про логирование и обработку эксепшенов простого приложения
    #38524019
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drcosmoПриветствую всех!

Я в джаве новичок, потому прошу не смеяться :)

При построении приложения какого-нибудь легкого уровня типа запись в бд+вывод на экран, как правильно делать эксепшены и логирование этих самых эксепшенов?


P.S.:
Мне думается, что надо так: создаем свой собственный класс MyException, наследуемый от Exception, затем в блоках try {...} catch обрабатываемых исключений вызываем наше исключение throw new MyException("Что-то здесь пишется"). Потом создается класс-логгер, пишущий в какой-то файл, и в классе MyException создается его экземпляр и производится логирование. Я правильно понимаю суть или не очень?
Можно проще
Код: java
1.
2.
3.
4.
5.
try {
  <...>
} catch(Exception e) {
   Logger.getLogger(<Ваш класс>.class).log(Level.SEVRE,e.getMessage);
}
...
Рейтинг: 0 / 0
Подскажите про логирование и обработку эксепшенов простого приложения
    #38524035
drcosmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul, спасибо.

А создание собственного класса эксепшенов это получается не уместно в подобных задачах?

Вернее, считается ли это правилом хорошего тона? :)
...
Рейтинг: 0 / 0
Подскажите про логирование и обработку эксепшенов простого приложения
    #38524036
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, близко к правильному. Но есть много нюансов. MyException на небольших проектах нужен редко. Т.е. в реальности оно нужно когда у вас большой сложый workflow и он имеет свои исключительные ситуации. В остальных же случая ваше исключение будет просто оберткой над cause, которая никому особо не нужна. Разве что если вам действительно нужно как-то спрятать десяток возможных внутренних исключений. Опять же, это на маленьких проектах редкость.

Обратите внимание на unchecked exception (RuntimeException). Хотя, по задумке, в Java RuntimeException нужны только для ошибок в коде проекта, а не для внешних исключительных ситуаций. Тем неменее многие их используют для того чтобы избавиться от лишних пробрасываний и catch блоков.

На самом деле catch нужен только там, где явно нужно обработать исключительную ситуацию. Но в большинстве случаев мы не можем ничего с ней сделать, кроме как залогировать\показать юзеру\отослать постой. Поэтому часто имеет смысл просто пробрасывать все исключения на самый верхний уровень, где обязательно есть специальный обработчик всех необработаных исключений. Чтобы никто не проскочил.

Полистайте поиск на этом форуме и на rsdn.ru про RuntimeException и Checked/Unchecked исключения вообще.

Я обычно использую Checked исключения только там где их действительно нужно обработать. А в остальном просто оборачиваю в RuntimeException и выкидываю на самый верх. Логировать любой возможный exception в каждом методе по стеку смысла нет. Только лог и код засирается.
Например новичку найти нужный Exception при ошибке деплоймента в старых версиях JBoss бывает тяжело. Так как в логе оно выглядит так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
GeneralFailureException
длинный stacktrace
caused by AnotherDeploymentException
длинный stacktrace
caused by ActualException - то что мы ищем
stacktrace
OneMoreDeploymentException
длинный stacktrace
caused by AnotherDeploymentException
длинный stacktrace
OneMoreDeploymentExceptionAgain
длинный stacktrace
caused by AnotherDeploymentException
длинный stacktrace



Это как раз просходит из за слишком обильного логирования исключений где только можно.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Подскажите про логирование и обработку эксепшенов простого приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]