powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Несколько ексепшнов разных уровней
25 сообщений из 56, страница 1 из 3
Несколько ексепшнов разных уровней
    #37989962
denis11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можо ли использовать такую схему?
Код: java
1.
2.
3.
4.
try{
}catch(IOException ex){
}catch(Exception ex){
}



Или все исключения включая IOException будут обрабатываться в блоке Exception?
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37989963
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37989972
denis11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczМожно.
А порядок блоков cath имеет значение? Тоб то надо ли ставить эксепшны нижнего уровня перед эксепшнами верхних уровней?
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37989993
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis11111А порядок блоков cath имеет значение? Тоб то надо ли ставить эксепшны нижнего уровня перед эксепшнами верхних уровней?
Не знаю что за верхние и нижние уровни. Есть общие (Обычно Exception, RuntimeException, Throwable), есть частные - их наследники.
Так вот частные должны идти вначале, иначе не скомпилируется (если родительский эксешн идет раньше).

Обратите так же внимания на нововведения в синтаксисе Java 7
http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37989997
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да так и нужно делать, по-другому компилятор не даст
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37990079
ResidentR6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе правильно.
Но вообще эксепшен IOException желательно обрабатывать именно там, где
он может возникнуть. Чтобы на основе него тут же сгенерить своё
исключение, зависящее от того где именно ошибка ввода-вывода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37990675
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поубивал бы.

Любое исключение надо обрабатывать на том уровне, где известно что с ним делать.

Никаких обрамителей IOException и выбросов MyWrappedIOException делать по дэфолту не надо, т.к. это только усложняет код и больше ничего не дает.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37990807
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

а если выбросить, например, ejbexception, вместо mywrappedioexception, это приемлемо? что скажешь/посоветуешь? спасибо!!
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991167
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokЛюбое исключение надо обрабатывать на том уровне, где известно что с ним делать.

Обернуть и пробросить. Фигли ещё с ним делать.

chabapokНикаких обрамителей IOException и выбросов MyWrappedIOException делать по дэфолту не надо, т.к. это только усложняет код и больше ничего не дает.
Очень много чего даёт. Если Sun всегда придерживался требования checked исключения. То в .NET, например исключения повально Unchecked. Spring придерживается тоже такого подхода, оборачивая исключения в свои RuntimeException. Это два разных подхода со своими плюсами и минусами.

А если мне нужно обработать исключение на уровне, который про IO вообще ничего знать не должен. Как прикажете. Прописывать там IOException тоже везде? Он же checked?
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991335
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz оборачивая исключения в свои RuntimeException

Суровый подход, никогда о таком не задумывался. То есть понятно. иногда рантайм я бросаю, но чтобы целенаправленно все оборачивать....
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991359
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинСуровый подход, никогда о таком не задумывался. То есть понятно. иногда рантайм я бросаю, но чтобы целенаправленно все оборачивать....
С подавляющим большинством исключений в системе нельзя вообще ничего сделать, кроме как залогировать или показать юзеру. Поэтому вполне логично их заворачивать в производный от RuntimeException и ловить только на самом внешнем уровне.
А для Spring это вообще жизненая необходимость. Там же десятки абстрактных слоёв, которым абсолютно всё равно IOException произошел, или SQLException, или вообще NPE.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991415
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА если мне нужно обработать исключение на уровне, который про IO вообще ничего знать не должен
это как? уровень явно работает с IO, но знать про него ничего не должен?
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991428
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaэто как? уровень явно работает с IO, но знать про него ничего не должен?
Ну, расскажи, что ты обычно сделаешь в случане IOException? Закрываются ресурсы в блоке finally. С эксепшном-то че делать?
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991448
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netchabapok,

а если выбросить, например, ejbexception, вместо mywrappedioexception, это приемлемо? что скажешь/посоветуешь? спасибо!!мне разъясните, пожалуйста!! работа стоит!!
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991465
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczchpashaэто как? уровень явно работает с IO, но знать про него ничего не должен?
Ну, расскажи, что ты обычно сделаешь в случане IOException? Закрываются ресурсы в блоке finally. С эксепшном-то че делать?с эксепшеном ничего особенного (как правило) не делаю. Модуль работает с IO. что плохо в том, что он знает - в результате IO может возникнуть IOException? зачем IOException оборачивать в какой-нибудь ImportFailedException только ради самого факта, что последний будет unchecked и модуль ничего не узнает об IO. что мы выиграем?
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991492
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaс эксепшеном ничего особенного (как правило) не делаю.
Оборачивают и прокидывают наверх, за что ты и предлагаеш "повбывать".

chpashaМодуль работает с IO. что плохо в том, что он знает - в результате IO может возникнуть IOException? зачем IOException оборачивать в какой-нибудь ImportFailedException только ради самого факта, что последний будет unchecked и модуль ничего не узнает об IO. что мы выиграем?
Модуль который работает с IO и выкидывает IOException. Он сам его "обработать" не способен.
Модуль, который работает с модулем, который выкидывает IOException, тоже "обработать" его не способен. Поэтому он заворачивает исключения во что-нибудь и прокидывает ещё выше.

chpashaЛюбое исключение надо обрабатывать на том уровне, где известно что с ним делать.
Проблема в том что "обработать" исключение может только самый верхний уровень. Или GUI покажет. Или Web Controller перекинет на страницу ошибки. Или просто фильтр верхнего уровня залогирует UncaughtException.
Тянуть все checked исключения до верхних уровней никто не будет. Поэтому оборачивают либо в checked, либо в unchecked MyExceptionWrapper.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991525
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczза что ты и предлагаеш "повбывать".этоне пашка вродеп
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991532
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netэтоне пашка вродеп
А, ну да. Прошу прощения. У меня с детства проблема с запоминанем экзотических имен.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991575
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПроблема в том что "обработать" исключение может только самый верхний уровень. Или GUI покажет. Или Web Controller перекинет на страницу ошибки.
на самом деле человек правильно написал, обработать исключение должен тот уровень, который по поводу исключения может что-то сделать. и это не обязательно будет самый верхний уровень.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991591
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaна самом деле человек правильно написал, обработать исключение должен тот уровень, который по поводу исключения может что-то сделать. и это не обязательно будет самый верхний уровень.
bla-bla-bla. Давайте конкретику. Я выше уже указал что это самый верхний уровень в подавляющем большинстве случаев (и перечислил их). Я не говорил что это абсолют. Да бывают варианты. Но это исключительно редкие варианты. Если вы не согласны, то приведите конкретные примеры, как у вас обрабатываются SQLException, IOException без проброса на верхние уровни.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991764
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczbla-bla-bla. ... Я не говорил что это абсолют.

BlazkowiczПроблема в том что "обработать" исключение может только самый верхний уровень


ну и кто здесь бла-бла-бла?

Blazkowiczприведите конкретные примеры, как у вас обрабатываются SQLException, IOException без проброса на верхние уровни.
например: создание отчетов через openoffice + jodconverter. можно получить IOException если openoffice демон еще не стартовал или нештатно отвалился. после этого его можно попытаться перезапустить и только если это не помогло выкинуть исключение наверх.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991777
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaну и кто здесь бла-бла-бла?

Тот кто не приводит конкретику.

chpashaнапример: создание отчетов через openoffice + jodconverter. можно получить IOException если openoffice демон еще не стартовал или нештатно отвалился. после этого его можно попытаться перезапустить и только если это не помогло выкинуть исключение наверх.
Я вам специальных сценариев могу насочинять вагон. Тот же OptimistickLockException часто можно обработать. Проблема только в том что это "частные случаи" для отдельных решений единичных задач. В общем случае (читай подавляющем большинстве) исключение оборачивается и выкидывается наверх.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991868
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczchpashaну и кто здесь бла-бла-бла?

Тот кто не приводит конкретику.
нет, тот, кто сначала безапелляционно говорит одно, а потом утверждает, что он такого не говорил.

BlazkowiczЯ вам специальных сценариев могу насочинять вагон.
я не сочиняю, а привожу реальный пример. сочинять все умеют. вот тебе еще пример - андроид. есть у нас допустим снятые на камеру смартфона фотки. если их показать в оригинальном виде в списке - вероятность нарваться на OutOfMemory чуть меньше 100%. по-этому что? правильно, надо показывать не картинки а уменьшенные копии. но проблема в том, что невозможно угадать наверняка какого размера картинки не вызовут проблем при этом угодив как владельцам экранов с 2xx ppi и кучей рама так и "нищебродам" с 320х480. Но проблема в том, что метод BitmapFactory.decodeStream уже при ресайзе может выкинуть OutOfMemory
поэтому распространенным подходом является выбор разумного дефолта - поимка OutOfMemory, уменьшение дефолта и повторение ресайза - все это без отягощения пользователя сообщениями о том, что у нас память кончилась.
кстати если посмотреть в логи самого андроида, то можно увидеть например при обращениях к базе, что ему периодически не удается выделить память под блоб, при этом в клиентский код это исключение не попадает.

Blazkowiczэто "частные случаи" для отдельных решений единичных задач. В общем случае (читай подавляющем большинстве) исключение оборачивается и выкидывается наверх.это не частные и не общие случаи, это всего лишь статистика. исключение обрабатывается там, где по его поводу нужно что-то сделать. то что таким местом является чаще всего верхний слой, самого правила не отменяет.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991943
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaнет, тот, кто сначала безапелляционно говорит одно, а потом утверждает, что он такого не говорил.
Любители выдирать цитаты из контекста и приводить их в качестве контр аргумента летят на юг. Дискутировать с демагогами не интересно.

chpashaвот тебе еще пример - андроид
Давай ещё J2ME вспомним. Android это не Java Platform. Ну, и вообще история из ряда вон. Т.е. вообще никак оценить доступную память и размер экрана??? Ловить OOME и потом жаловаться что Андроид тормозная платформа?

chpashaэто не частные и не общие случаи, это всего лишь статистика. исключение обрабатывается там, где по его поводу нужно что-то сделать. то что таким местом является чаще всего верхний слой, самого правила не отменяет.
ОК. Но разговор начался с того что исключения не нужно оборачивать, а обрабатывать на месте, так как только местный модуль может знать что с ним делать. Ваше же новое утверждение сводится к тому что "программа должна работать так как задумано". С этим нет смысла спорить.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37991991
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaпоэтому распространенным подходом является выбор разумного дефолта - поимка OutOfMemory, уменьшение дефолта и повторение ресайз

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


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