![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Вот такой, весьма простой с одной стороны вопрос, задал я себе недавно. Я над ним поразмышлял и придумал несколько аргументов как за так и против, пока я их говорить не стану, чтобы не сбивать вас с толку. Замечу лишь, что при ответе примете во внимание возможность сообщать об ошибках, например, через логгирование и визуальное оповещение. Так вот когда следует и когда не следует сообщать об ошибках выбрасывая исключение?
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Всегда, когда в данном методе невозможно обработать ошибку, при этом дальнейшее выполнение невозможно.
-------------------- ![]() ![]() |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Иногда удобно использовать исключения для прерывания некоторого процесса, но это не является хорошим стилем.
Поэтому соглашусь с w1nd. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
ёмко... +1 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| Den1s |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 27.10.2005 Репутация: нет Всего: нет |
думаю через логгирование лучше всегда потом по логам будет проще отследить работу программу, а вот визуальное оповещение только в тех случаях когда ошибка приводит к некорректной работе проги или как уже было сказано когда в данном методе невозможно обработать ошибку, при этом дальнейшее выполнение невозможно.:imho: Это сообщение отредактировал(а) Den1s - 24.8.2007, 08:34 |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Замечание основанное на чистой "психологии". Если прога будет использоваться юзерами, то она должна ругаться исключениями только в случае нештатных ситуаций. Типа такого:
Это сообщение отредактировал(а) _Y_ - 24.8.2007, 09:32 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Если прога будет использоваться юзерами, то ВСЕ исключения должны обрабатываться, результатом чего и должны быть окошки с сообщениями об ошибке. -------------------- ![]() ![]() |
|||
|
||||
| le_chat |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 26.10.2006 Репутация: нет Всего: нет |
сам недавно задавался подобным вопросом. пришел к выводу что исключения есть сигнал программисту об ошибке в логике программы. пользователь конечно никаких исключений видеть не должен. только вот это не всегда удобный сигнал - в j2me к примеру при отладке на девайсе при бросании исключения поток скорее всего просто повиснет без всяких сообщений, а некоторые девайсы вообще скушают исключения и не подавятся. |
|||
|
||||
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Это идеальный вариант. К сожалению, не помню названия книги, в которой доволно детально была описана проблема. Сколь помню идея такова:
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
У Макконела в "Совершенном коде" довольно неплохо тема раскрыта |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Хорошо задаю наводящий вопрос в форме жизненной задачи.
Например, вы написали свой класс унаследованный от TabbedPaneUI, который в заисиовсти от текущего L&F работает по разному. Теперь перед вами стоит вопрос как поступить, если установленный пользователе L&F отличается от тех, что вы обрабатываете в своем TabbedPaneUI? Как бы поступили вы? При ответе примите во внимание, что в вашем проекте может быть множество классов, которые переписывают интерфесы разных GUI компонент. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
точка входа есть? Как только определили, что гуй не отрисуется по такому ЛАФ, то сообщаем об этом юзверю алертом, а сами подтыкиваем какой-нибудь дефолтный ЛАФ, чтобы гуй, таки, запустился... Это сообщение отредактировал(а) y3u - 24.8.2007, 15:44 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| hydrant |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
А как насчёт Double.parseDouble(java.lang.String stringToParse)?
Я всегда использую такую конструкцию:
Я что-то в корне неправильное делаю или это типичный случай использования исключений, когда они не являются некими "страшными исключения", а просто средством для принятия дальнейшего решения? Добавлено через 14 минут и 21 секунду Упс, я извиняюсь. Кажется я не совсем правильно понял суть изначального вопроса. |
|||
|
||||
| w1nd |
|
||||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Все _ситуации_ предусмотреть невозможно. Всё возможные _исключения_ обработать не только можно, но и довольно легко, тем более в java. -------------------- ![]() ![]() |
||||
|
|||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
надо место в коде использовать эргономично...
я так мыслю, если бы мы открывали какие-либо потоки, которые могут нам бросить какой-нить эксцебшон, то вполне уместно обернуть их try/catch и finally, в последнем мы все открытое должны прибить, апосля можно бросать какой-нибудь эксцебшон, желательно своего собственного типа, а как его там навихру у Карлсона будут или не будут отбрабатывать - не наша забота... кстати, есть один известный показательный пример использования эксцепшена. Вот, к примеру, приходят к нам реквестом гигантские многометровые XML файлеги, нам не надо их разбирать целиком, а надо выудить инфу, скажем, из первой четверти этоих XML-негов. Для этого мы, ессесно, будем использовать SAX. Но тут проблэма, как сказать саксу, что, типа, как бы, зачитали инфу, чего тратить ресурсы и тупо зачитывать файло дальше? Вот тут нам и приходит на помощь эксцепшин, который мы тупо кидаем в хендлере, когда зачитаем нужную инфу. -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |