![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 0 Всего: 1 |
Если бросается, скажем, IOException, как узнать, какие точно его подклассы бросаются?
|
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
А для чего? Класс можно узнать так:
|
|||
|
||||
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 0 Всего: 1 |
Для того, чтобы ловить их поодиночке, и все это в статике. Т.е. чтобы различать, например, ошибку коннекта и ошибку резолва имени.
|
|||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Если у тебя в деклорации метода стоит IOException, то его и придется ловить ( или эксепшн выше по иерархии). Но если тебе доподленно известно, что могут быть выброшены сабклассы IOException (например InterruptedIOException), и тебе надо этот InterruptedIOException обработать как то отдельно, то в чем собственно проблема?
|
|||
|
||||
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 0 Всего: 1 |
Проблема в том, чтобы узнать, какие именно подклассы бросаются. Эклипс показывает в quick fix только надкласс.
|
|||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Если в документации к либе или java-доках нет информации о других эксепшенах - значит ты не должен их обрабатывать. В следующей версии фреймворка эксепшены могут измениться и твой код на новой версии будет не работоспособным, - твое приложение перестает быть обратно-совместимым, что не совсем верно.
А вообще, если это опенсорс - всегда можно воспользоваться сырцами. Если нет - только документация, или метод тыка. |
|||
|
||||
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 0 Всего: 1 |
А не колупаясь в доках и сырцах это можно как-то сделать? IDE это может показать?
|
|||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
if подключенные сырцы/javadoc к ИДЕ != "IDE это может показать", то нет.
Это сообщение отредактировал(а) priam220 - 25.3.2012, 21:31 |
|||
|
||||
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 0 Всего: 1 |
Да, список всех типов эксепшенов, которые может бросать метод, без того, чтобы подтипы поглощались надтипами.
|
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
||||
|
||||
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 0 Всего: 1 |
||||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Да, именно это. Зачем? Опять же повторюсь - public api задает контракт. Все, что выходит за рамки этого контракта - внештатная ситуация (или кривые руки автора), поэтому ловить это нужно в очень редких случаях. |
|||
|
||||
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 0 Всего: 1 |
Вот реальный пример. ConnectException поглощается SocketException, а оно поглощается IOException. Если я хочу различать ConnectException и другие ошибки, я нарушаю контракт? Модуль кидает IOException.
|
|||
|
||||
| Karadul |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 378 Регистрация: 18.5.2006 Репутация: 0 Всего: 1 |
Подскажите хоть запрос для гугла. Тут, похоже, проку не будет.
Это сообщение отредактировал(а) Karadul - 26.3.2012, 21:47 |
|||
|
||||
| sergioK1 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
ты не хами , тут никто ничем не обязан ,
пойдет ? |
||||
|
|||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
По сути: Универсального способа нет. От IDE тут пользы мало, от гугла немногим больше. Либо надо смотреть исходники интересующего API, либо ставить эксперимент и смотреть, что конкретно вылетает. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
![]()
|
| Правила форума "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. |