|
|
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Можо ли использовать такую схему? Код: java 1. 2. 3. 4. Или все исключения включая IOException будут обрабатываться в блоке Exception? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 13:25:45 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 13:27:10 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМожно. А порядок блоков cath имеет значение? Тоб то надо ли ставить эксепшны нижнего уровня перед эксепшнами верхних уровней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 13:32:44 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
denis11111А порядок блоков cath имеет значение? Тоб то надо ли ставить эксепшны нижнего уровня перед эксепшнами верхних уровней? Не знаю что за верхние и нижние уровни. Есть общие (Обычно Exception, RuntimeException, Throwable), есть частные - их наследники. Так вот частные должны идти вначале, иначе не скомпилируется (если родительский эксешн идет раньше). Обратите так же внимания на нововведения в синтаксисе Java 7 http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 13:49:59 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
да так и нужно делать, по-другому компилятор не даст ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 13:51:23 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
В принципе правильно. Но вообще эксепшен IOException желательно обрабатывать именно там, где он может возникнуть. Чтобы на основе него тут же сгенерить своё исключение, зависящее от того где именно ошибка ввода-вывода. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 14:22:08 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Поубивал бы. Любое исключение надо обрабатывать на том уровне, где известно что с ним делать. Никаких обрамителей IOException и выбросов MyWrappedIOException делать по дэфолту не надо, т.к. это только усложняет код и больше ничего не дает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 20:55:37 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chabapok, а если выбросить, например, ejbexception, вместо mywrappedioexception, это приемлемо? что скажешь/посоветуешь? спасибо!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2012, 23:16:57 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chabapokЛюбое исключение надо обрабатывать на том уровне, где известно что с ним делать. Обернуть и пробросить. Фигли ещё с ним делать. chabapokНикаких обрамителей IOException и выбросов MyWrappedIOException делать по дэфолту не надо, т.к. это только усложняет код и больше ничего не дает. Очень много чего даёт. Если Sun всегда придерживался требования checked исключения. То в .NET, например исключения повально Unchecked. Spring придерживается тоже такого подхода, оборачивая исключения в свои RuntimeException. Это два разных подхода со своими плюсами и минусами. А если мне нужно обработать исключение на уровне, который про IO вообще ничего знать не должен. Как прикажете. Прописывать там IOException тоже везде? Он же checked? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 10:13:53 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Blazkowicz оборачивая исключения в свои RuntimeException Суровый подход, никогда о таком не задумывался. То есть понятно. иногда рантайм я бросаю, но чтобы целенаправленно все оборачивать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 11:43:09 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
ОзверинСуровый подход, никогда о таком не задумывался. То есть понятно. иногда рантайм я бросаю, но чтобы целенаправленно все оборачивать.... С подавляющим большинством исключений в системе нельзя вообще ничего сделать, кроме как залогировать или показать юзеру. Поэтому вполне логично их заворачивать в производный от RuntimeException и ловить только на самом внешнем уровне. А для Spring это вообще жизненая необходимость. Там же десятки абстрактных слоёв, которым абсолютно всё равно IOException произошел, или SQLException, или вообще NPE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 11:51:20 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА если мне нужно обработать исключение на уровне, который про IO вообще ничего знать не должен это как? уровень явно работает с IO, но знать про него ничего не должен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 12:17:06 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaэто как? уровень явно работает с IO, но знать про него ничего не должен? Ну, расскажи, что ты обычно сделаешь в случане IOException? Закрываются ресурсы в блоке finally. С эксепшном-то че делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 12:20:40 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
grasoff.netchabapok, а если выбросить, например, ejbexception, вместо mywrappedioexception, это приемлемо? что скажешь/посоветуешь? спасибо!!мне разъясните, пожалуйста!! работа стоит!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 12:32:54 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Blazkowiczchpashaэто как? уровень явно работает с IO, но знать про него ничего не должен? Ну, расскажи, что ты обычно сделаешь в случане IOException? Закрываются ресурсы в блоке finally. С эксепшном-то че делать?с эксепшеном ничего особенного (как правило) не делаю. Модуль работает с IO. что плохо в том, что он знает - в результате IO может возникнуть IOException? зачем IOException оборачивать в какой-нибудь ImportFailedException только ради самого факта, что последний будет unchecked и модуль ничего не узнает об IO. что мы выиграем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 12:40:25 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaс эксепшеном ничего особенного (как правило) не делаю. Оборачивают и прокидывают наверх, за что ты и предлагаеш "повбывать". chpashaМодуль работает с IO. что плохо в том, что он знает - в результате IO может возникнуть IOException? зачем IOException оборачивать в какой-нибудь ImportFailedException только ради самого факта, что последний будет unchecked и модуль ничего не узнает об IO. что мы выиграем? Модуль который работает с IO и выкидывает IOException. Он сам его "обработать" не способен. Модуль, который работает с модулем, который выкидывает IOException, тоже "обработать" его не способен. Поэтому он заворачивает исключения во что-нибудь и прокидывает ещё выше. chpashaЛюбое исключение надо обрабатывать на том уровне, где известно что с ним делать. Проблема в том что "обработать" исключение может только самый верхний уровень. Или GUI покажет. Или Web Controller перекинет на страницу ошибки. Или просто фильтр верхнего уровня залогирует UncaughtException. Тянуть все checked исключения до верхних уровней никто не будет. Поэтому оборачивают либо в checked, либо в unchecked MyExceptionWrapper. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 12:48:08 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Blazkowiczза что ты и предлагаеш "повбывать".этоне пашка вродеп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 13:00:15 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
grasoff.netэтоне пашка вродеп А, ну да. Прошу прощения. У меня с детства проблема с запоминанем экзотических имен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 13:03:14 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПроблема в том что "обработать" исключение может только самый верхний уровень. Или GUI покажет. Или Web Controller перекинет на страницу ошибки. на самом деле человек правильно написал, обработать исключение должен тот уровень, который по поводу исключения может что-то сделать. и это не обязательно будет самый верхний уровень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 13:17:33 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaна самом деле человек правильно написал, обработать исключение должен тот уровень, который по поводу исключения может что-то сделать. и это не обязательно будет самый верхний уровень. bla-bla-bla. Давайте конкретику. Я выше уже указал что это самый верхний уровень в подавляющем большинстве случаев (и перечислил их). Я не говорил что это абсолют. Да бывают варианты. Но это исключительно редкие варианты. Если вы не согласны, то приведите конкретные примеры, как у вас обрабатываются SQLException, IOException без проброса на верхние уровни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 13:26:33 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Blazkowiczbla-bla-bla. ... Я не говорил что это абсолют. BlazkowiczПроблема в том что "обработать" исключение может только самый верхний уровень ну и кто здесь бла-бла-бла? Blazkowiczприведите конкретные примеры, как у вас обрабатываются SQLException, IOException без проброса на верхние уровни. например: создание отчетов через openoffice + jodconverter. можно получить IOException если openoffice демон еще не стартовал или нештатно отвалился. после этого его можно попытаться перезапустить и только если это не помогло выкинуть исключение наверх. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 14:39:42 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaну и кто здесь бла-бла-бла? Тот кто не приводит конкретику. chpashaнапример: создание отчетов через openoffice + jodconverter. можно получить IOException если openoffice демон еще не стартовал или нештатно отвалился. после этого его можно попытаться перезапустить и только если это не помогло выкинуть исключение наверх. Я вам специальных сценариев могу насочинять вагон. Тот же OptimistickLockException часто можно обработать. Проблема только в том что это "частные случаи" для отдельных решений единичных задач. В общем случае (читай подавляющем большинстве) исключение оборачивается и выкидывается наверх. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 14:46:46 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Blazkowiczchpashaну и кто здесь бла-бла-бла? Тот кто не приводит конкретику. нет, тот, кто сначала безапелляционно говорит одно, а потом утверждает, что он такого не говорил. BlazkowiczЯ вам специальных сценариев могу насочинять вагон. я не сочиняю, а привожу реальный пример. сочинять все умеют. вот тебе еще пример - андроид. есть у нас допустим снятые на камеру смартфона фотки. если их показать в оригинальном виде в списке - вероятность нарваться на OutOfMemory чуть меньше 100%. по-этому что? правильно, надо показывать не картинки а уменьшенные копии. но проблема в том, что невозможно угадать наверняка какого размера картинки не вызовут проблем при этом угодив как владельцам экранов с 2xx ppi и кучей рама так и "нищебродам" с 320х480. Но проблема в том, что метод BitmapFactory.decodeStream уже при ресайзе может выкинуть OutOfMemory поэтому распространенным подходом является выбор разумного дефолта - поимка OutOfMemory, уменьшение дефолта и повторение ресайза - все это без отягощения пользователя сообщениями о том, что у нас память кончилась. кстати если посмотреть в логи самого андроида, то можно увидеть например при обращениях к базе, что ему периодически не удается выделить память под блоб, при этом в клиентский код это исключение не попадает. Blazkowiczэто "частные случаи" для отдельных решений единичных задач. В общем случае (читай подавляющем большинстве) исключение оборачивается и выкидывается наверх.это не частные и не общие случаи, это всего лишь статистика. исключение обрабатывается там, где по его поводу нужно что-то сделать. то что таким местом является чаще всего верхний слой, самого правила не отменяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 15:19:11 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaнет, тот, кто сначала безапелляционно говорит одно, а потом утверждает, что он такого не говорил. Любители выдирать цитаты из контекста и приводить их в качестве контр аргумента летят на юг. Дискутировать с демагогами не интересно. chpashaвот тебе еще пример - андроид Давай ещё J2ME вспомним. Android это не Java Platform. Ну, и вообще история из ряда вон. Т.е. вообще никак оценить доступную память и размер экрана??? Ловить OOME и потом жаловаться что Андроид тормозная платформа? chpashaэто не частные и не общие случаи, это всего лишь статистика. исключение обрабатывается там, где по его поводу нужно что-то сделать. то что таким местом является чаще всего верхний слой, самого правила не отменяет. ОК. Но разговор начался с того что исключения не нужно оборачивать, а обрабатывать на месте, так как только местный модуль может знать что с ним делать. Ваше же новое утверждение сводится к тому что "программа должна работать так как задумано". С этим нет смысла спорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 15:46:33 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaпоэтому распространенным подходом является выбор разумного дефолта - поимка OutOfMemory, уменьшение дефолта и повторение ресайз Чо, адок, как сказал бы мой бывший коллега... Я думал это я адский гонщик, точнее, велосипедист..но вы превзошли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:00:14 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37991991&tid=2130794]: |
0ms |
get settings: |
18ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
44ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 332ms |
| total: | 498ms |

| 0 / 0 |
