powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Несколько ексепшнов разных уровней
56 сообщений из 56, показаны все 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
Несколько ексепшнов разных уровней
    #37992022
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЛюбители выдирать цитаты из контекста и приводить их в качестве контр аргумента
можешь привести контекст, который я якобы опустил и который перестанет делать ограничительное наречие "только" безапелляционным?

Blazkowiczchpashaвот тебе еще пример - андроид
Давай ещё J2ME вспомним. Android это не Java Platform
это конечно все меняет.

BlazkowiczТ.е. вообще никак оценить доступную память и размер экрана???
оценить можно, и выбрать разумные значения по умолчанию тоже. нет полной гарантии что исключение все же не возникнет в тот момент когда ты начнешь даунскейлить картинки и выплевывать их в Listview. по-этому его можно перехватить и еще уменьшить размер thumbnail.

BlazkowiczЛовить OOME и потом жаловаться что Андроид тормозная платформа?
это пример того, когда можно "восстановиться" после исключения. это не значит, что оно выскакивает постоянно. более того, оно может возникнуть лишь каждый надцатый раз после смены ориентации, что в нормальной ситуации никогда не происходит - и тем не менее. теперь разрешаю прочитать лекцию о том, какая чудесная система андроид, и какие кривые руки у тех, кто под него пишет.

BlazkowiczВаше же новое утверждение сводится к тому что "программа должна работать так как задумано". С этим нет смысла спорить.я всего лишь спросил, по каким причинам модулю не стоит знать про IOException. причем спросил не подкола ради, а из любопытства.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992027
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
ну зачем так усложнять код.
Нехватка памяти обычно означает фатальную ошибку.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992044
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинЯ думал это я адский гонщик, точнее, велосипедист..но вы превзошли...
вы пацаны все такие умные шо аш песец. вам видно сюда - в официальной статье от создателей (с) говорится ровно про тоже, что и я. там лишь умалчивается, что выбор "оптимальных" размеров не дает гарантии, что исключение вы не хапнете. соответственно у вас есть выбор, либо перестраховки ради уменьшать картинки до таких размеров, что вас заплюют владельцы таблетов, либо крутиться. весь андроид это аццкий зоопарк различного железа. чтобы работало если и не везде, то почти везде приходится крутиться.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992046
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насчет андроида я согласен с chpasha, и усложнение и тд тут не при чем - это реалии жизни. Если не верите попробуйте:)
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992051
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123chpasha,
ну зачем так усложнять код.
Нехватка памяти обычно означает фатальную ошибку.
в том-то и дело что нет. во первых еще раз повторяю, при правильном подборе размеров исключения почти никогда не бывает. во-вторых если оно и случается, мы уменьшаем размер и все работает прекрасно дальше, для пользователя полностью незаметно.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992053
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaя всего лишь спросил, по каким причинам модулю не стоит знать про IOException. причем спросил не подкола ради, а из любопытства.
Первая причина. Так как в подавляющем большинстве случаев исключения прокидываются на несколько уровней вверх, то checked IOException нам нужно заявлять во всех методах.
Вторая причина - модулю, у которого задача "сохранить данные" используя другой модуль - работы с IO, абсолютно побарабану по какой причине само сохранение обрыгалось. IOException там или NPE. Ему только нужно знать что задача по какой-то причине не выполнена.
Хотя если тему ограничить исключительно IOException, то можно ещё поспорить. Потому что он является родителем для доброй половины всех остальных исключений.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992067
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaвы пацаны все такие умные шо аш песец.

Не отчаивайся. Упорный кодинг и ты таким будешь.

chpashaвам видно сюда - в официальной статье от создателей (с) говорится ровно про тоже, что и я.

статьяTo avoid java.lang.OutOfMemory exceptions, check the dimensions of a bitmap before decoding it, unless you absolutely trust the source to provide you with predictably sized image data that comfortably fits within the available memory.

Блин, и ничего нет про то что нужно ловить исключение и делать re-scale.

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

Там просто предупреждают, что таки может выбросить и дают пару советов, как минимизировать риски как бе..понятное дело, что аутофмемори может все что угодно выбросить
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992088
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczстатьяTo avoid java.lang.OutOfMemory exceptions, check the dimensions of a bitmap before decoding it, unless you absolutely trust the source to provide you with predictably sized image data that comfortably fits within the available memory.

Блин, и ничего нет про то что нужно ловить исключение и делать re-scale.
check the dimensions of a bitmap - означает задавайте размер, который система сможет переварить. ты видишь где-то расчет формулы размера, который система сможет переварить? а с учетом неизвестного количества объектов, показываемых одновременно? в примере передается размер 100х100. Откуда взялись эти цифры? Есть ли уверенность, что битмапы такого размера проканают всегда и везде? что будет результатом того, что они не проканали?


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

ok. Хочу ещё примеров ремонтирования программы на ходу и добавления в кавычках памяти.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992111
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинТам просто предупреждают, что таки может выбросить и дают пару советов, как минимизировать риски как бе
ну т.е. как бы понятно, что минимизировать риски это не тоже само что исключить оные. нет? т.е.описанный в статье метод все же выкинеть исключение на одном из 100 смартфонов, если я быстро быстро поверну экран туда сюда пару десятков раз. то бишь на одном из 100 смартфонов "оптимальный" размер все таки окажется не оптимальным и вот тогда захват исключения и повторный вызов может решить исход сражения ну или оттянуть конец, а там глядишь андроид прибьет ненужный сервис и с памятью опять станет шоколадно.

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

ok. Хочу ещё примеров ремонтирования программы на ходу и добавления в кавычках памяти.
JetBrains IDEA вроде пытается не умереть и просит увеличить себе лимит heap size

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

Озверин..понятное дело, что аутофмемори может все что угодно выбросить
в отличии от упомянутой ситуации придется очень сильно постараться

Ну честно сказать, расчитать кол-во картинок нужным размером на заданном экране - не такая уж и проблема. Allocate можно сделать для 1й картинки, умножить на предполагаемое кол-во и прикинуть размер занимаемой памяти же.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992133
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaты видишь где-то расчет формулы размера, который система сможет переварить?
Размер требуемый для рендера bitmap оценить можно достаточно точно. Вопрос только про свободную память. Вроде тоже инфа доступная. Что именно вызывает сложности?

chpashaа с учетом неизвестного количества объектов, показываемых одновременно?
Это как? Программа не знает сколько ей показывать? Или не может прикинуть по размеру экрана? Или что?

chpashaв примере передается размер 100х100. Откуда взялись эти цифры?

В примере выводится строка "Hello World!". Откуда взялась эта строка? КО сообщает что это просто пример.

chpashaЕсть ли уверенность, что битмапы такого размера проканают всегда и везде? что будет результатом того, что они не проканали?

Размер вычисляется в зависимости от доступной памяти и разрешения экрана. Из этого размера получаем допустимое разрешени для thumbnail.

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

ok. Хочу ещё примеров ремонтирования программы на ходу и добавления в кавычках памяти.
JetBrains IDEA вроде пытается не умереть и просит увеличить себе лимит heap size

из своего репертуара так сразу больше не припомню. впрочем неверно расценивать фразу "что-то сделать по этому поводу" обязательно как попытку починить. выдать ошибку в лог и послать мыло тоже себе вполне "что-то сделать".

Кстати да, так и делает ;)
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992152
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaJetBrains IDEA вроде пытается не умереть

JVM и так не умирает при нехватке памяти. Если проблема только в текущем потоке, то OOME его эффективно обрубает. Если проблема более глобальная, тот тут уже ничего не поможет.

chpashaи просит увеличить себе лимит heap size

Т.е. прокидывает исключение на верхний уровент - GUI\Uncaught и показывает сообщение пользователю. OOME никак не чинится в том месте где он произошел, есть речь про IDEA.

chpashaвыдать ошибку в лог и послать мыло тоже себе вполне "что-то сделать".
Понимаешь, если выдавать в лог и посылать мыло каждый раз "на месте", то это приведет к тому что админ будет получаить по 5 email-ов на одну ошибку. Так как "в подавляющем большинстве случаев" таки нужно ещё исключением сообщить о проблеме тому кто вызвал текущий метод. Ну, и проект будет испещрен кодом вида
Код: java
1.
2.
3.
catch(...){
  Utils.logAndSend(e);
}



В старых версиях JBoss с логированием было именно так. В результате причину найти достаточно сложно. Нужно из всех исключений в логе найти самое первое, и в нем найти корневой cause. А если, не дай бог, кто-то "догадался" не вложить cause. Но придется листать все залогированые исключения, надеясь найти только то где действительный cause указана.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992188
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczchpashaты видишь где-то расчет формулы размера, который система сможет переварить?
Размер требуемый для рендера bitmap оценить можно достаточно точно. Вопрос только про свободную память. Вроде тоже инфа доступная. Что именно вызывает сложности?
ну например узнать сколько конкретно выделили твоему приложению. ты ведь не думаешь, что андроид щедро отмеряет каждому все что есть? и даже тогда нет уверенности в том, что после вычисления оптимального размера и ресайза первых двух картинок для третьей останется планируемый размер.

Blazkowiczchpashaа с учетом неизвестного количества объектов, показываемых одновременно?
Это как? Программа не знает сколько ей показывать? Или не может прикинуть по размеру экрана? Или что?
[терпеливо] это так, что когда ты показываешь список объектов в ListView очевидно что рендерятся они не все, а только некоторые. сколько конкретно, зависит как минимум от реализации ListView, размеров твоего экрана, пропорций каждого элемента.

Blazkowiczchpashaв примере передается размер 100х100. Откуда взялись эти цифры?

В примере выводится строка "Hello World!". Откуда взялась эта строка? КО сообщает что это просто пример.
хватит паясничать. это как-то странно сочетается с попыткой общения на Вы - вызывает когнитивный диссонанс.

BlazkowiczЯ прочитал статью, поэтому способен сравнить с тем что ты говоришь. Не нужно мне пересказывать что там написано.
пока что ты рассуждаешь о сферических конях.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992215
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТ.е. прокидывает исключение на верхний уровент - GUI\Uncaught и показывает сообщение пользователю. OOME никак не чинится в том месте где он произошел, есть речь про IDEA.
это был ответ на просьбу о примере починки. а ты со своим "прокидывается" все никак не угомонишься.

Blazkowiczchpashaвыдать ошибку в лог и послать мыло тоже себе вполне "что-то сделать".
Понимаешь, если выдавать в лог и посылать мыло каждый раз "на месте"
я не понимаю, ты же толковый. только сегодня тупишь, или меня злить пытаешься? "на месте" означает не место возникновения исключения, а как раз таки место где ошибку наиболее целесообразно обработать. это отвлекаясь от того, что в процитированной фразе (да и всем посте, из которого она взята) вообще "на месте" нету. это про вырывание из контекста.


BlazkowiczНу, и проект будет испещрен кодом вида
Код: java
1.
2.
3.
catch(...){
  Utils.logAndSend(e);
}



ясно, аппендеры у нас уже отменили. а если ошибку в базу надо записать, то вызов видимо будет выглядеть как logAndPersist. видимо сегодня просто не твой день, да? ну или азарт молодецкий.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992228
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaну например узнать сколько конкретно выделили твоему приложению. ты ведь не думаешь, что андроид щедро отмеряет каждому все что есть?
Т.е. соответствующий API в Android отсутствует в принципе. Ты это хочешь сказать? Или нахрен нужен такой API, который мне вернет количество доступной памяти, которое я не могу использовать.

chpashaи даже тогда нет уверенности в том, что после вычисления оптимального размера и ресайза первых двух картинок для третьей останется планируемый размер.
Да, в пучине полной неизведанности о размере памяти и количестве картинок остаётся только гадать.

chpashaзависит от реализации ListView
Ещё один мистический фактор. Программа не знает какую реализацию ListView она использует и отсюда не может оценить количество картинок.

chpashaхватит паясничать. это как-то странно сочетается с попыткой общения на Вы - вызывает когнитивный диссонанс.
Твои попытки перейти на демагогию не располагают меня к другому стилю общения.


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

chpashaа если ошибку в базу надо записать, то вызов видимо будет выглядеть как logAndPersist.
Ну, смотри. Тебе самому по сути сказать нечего. Как не поглумиться с такого? Ну, будет аппендер. Будет 5-10 писем на одно исключение.

chpashaвидимо сегодня просто не твой день, да? ну или азарт молодецкий.
У меня каждый день мой и азарт никуда не девался.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992258
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТ.е. соответствующий API в Android отсутствует в принципе
чтобы не быть категоричным - мне о подобной возможности не известно (имеется в виду узнать из аппа сколько ему доступно всего и сколько еще свободно). знаю только, что выделяемый объем от устройства к устройству и от версии к версии варьирует.

Blazkowiczchpashaзависит от реализации ListView
Ещё один мистический фактор. Программа не знает какую реализацию ListView она использует и отсюда не может оценить количество картинок.т.е. что кол-во версий андроида строго больше одной - это для тебя открытие? и соответственно реализация ListView в версии 2.1 не обязана быть идентичной с 4.1?

Blazkowiczchpashaхватит паясничать. это как-то странно сочетается с попыткой общения на Вы - вызывает когнитивный диссонанс.
Твои попытки перейти на демагогию не располагают меня к другому стилю общения.
ясно

Blazkowiczchpashaпока что ты рассуждаешь о сферических конях.
Смотри как зацепился. Хоть бы на один пост по теме ответил.
по какой теме? мы от темы топика уползли уже очень далеко.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992274
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНу, смотри. Тебе самому по сути сказать нечего.
с учетом того, что ты мне приписал утверждение, которого я не говорил и теперь меня же за него азартно разоблачаешь :) ? что тут скажешь.

Blazkowicz Как не поглумиться с такого? Ну, будет аппендер. Будет 5-10 писем на одно исключение.
да-да, я как раз об этом выше написал.

Blazkowiczи азарт никуда не девался.
что да то да. наш паровоз летит вперед и все такое. ну ты эта, еще читай иногда, что тебе в ответ пишут.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992341
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странный вообще спор.
Смешали всё, люди, кони, учётки, игрушки и андроиды.
Политика исключений везде разная и зависит от многих факторов.
- при БЛ на примере веба и программа учётного типа - нужно пробрасывать на самый верх, т.к. там логика железобетонно прошита в коде. Не будет там слов: ".. если исключение по банку, то провести деньги по СМС.
- если это игрушка для ВСЕХ видов экранов и разрешений, то уровень АРI с экраном должен владеть и рулить всеми исключенимями. Тогда в ТЗ пишут - должна работать на памяти 512 Мбт и выше.

А попытки отсебятины и делать кусок кода на все случаи жизни - велосипеды.
Ведь не зря, во всех мануалах пишут о 3-х ???? типах исключений и ошибках. А также логах))
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992373
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaможешь привести контекст, который я якобы опустил и который перестанет делать ограничительное наречие "только" безапелляционным?
"только" относилось к примеру который я привел перед этим предложением, а не к тому что исключения никогда нельзя обработать на месте, а "только" пробрасывать наверх. Это и есть цитата выдраная из контекста.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992377
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мамонты бодаются, ТС в шоке спрятался
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992379
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaт.е. что кол-во версий андроида строго больше одной - это для тебя открытие? и соответственно реализация ListView в версии 2.1 не обязана быть идентичной с 4.1?
Для меня стало открытием что поведени ListView разное в каждой версии андроида.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992384
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никМамонты бодаются, ТС в шоке спрятался
Да, какое-то пятничное настроение в среду. Сам в шоке.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992389
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz"только" относилось к примеру который я привел перед этим предложением, а не к тому что исключения никогда нельзя обработать на месте, а "только" пробрасывать наверх. Это и есть цитата выдраная из контекста.
ясно, прошу пардону. я правда спросил об этом надцать постов назад, но лучше поздно, чем никогда.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992404
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДля меня стало открытием что поведени ListView разное в каждой версии андроида.
я не стану утверждать, что я отслеживаю изменения кода между версиями, но почти наверняка уверен, что определенные оптимизации в том числе в рендеринг элементов наверняка вносились и будут вноситься. в любом случае глупо закладываться на то, что любой listview в любой версии будет рендерить за раз например строго "те что помещаются", или "те что помещаются плюс по одному невидимому сверху и снизу, а может и по два" или еще как.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37992418
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
случай, когда есть 2 вида компонента, один - рендерит всё и кушает много памяти ....и второй МемориКомпонент - кушает минимум памяти - вагон и маленькая тележка.
Так и должно быть. Соединять в один универсальный - вряд-ли. Задачи разные.
...
Рейтинг: 0 / 0
Несколько ексепшнов разных уровней
    #37994085
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ого наплодили.

grasoff.netchabapok,

а если выбросить, например, ejbexception, вместо mywrappedioexception, это приемлемо? что скажешь/посоветуешь? спасибо!!
...
мне разъясните, пожалуйста!! работа стоит!!


Думать своей головой и находить в сети материал (это к "работа стоит").

Скромно так посоветую придерживаться того стиля, которого требует используемый вами фреймворк. Если там написано что-то типа "если хотите рюшечки, оберните в ejbexception", и в этом состоит его Великая Идея, то можете оборачивать.

Я лишь против маниакального оборачивания, без особых на то оснований, т.к. это говнокод. То что иногда приходится обернуть Exception в своего наследника RuntimeException - это как раз одно из оснований. Собственно, там другого выхода просто нет - надо доделывать свой код под существующий (возможно говно)код, поэтому моя реплика не касается этого случая.

Возьмем например JSONTokener.java из json.org. Есть там такой метод next() throws JSONException, есть там такой фрагмент:
Код: java
1.
2.
3.
4.
5.
try {
                c = this.reader.read();
            } catch (IOException exception) {
                throw new JSONException(exception);
            }



Это при том, что JSONException у них checked. Налицо врапперовка головного мозга, или автор банально не умеет пользоваться экзепшенами. Либа парадоксально распространенная, давайте посмотрим к чему эта врапперовка приводит.

Предположим, IOException не было бы обернуто. Тогда все просто -- на том уровне, где мы можем сделать реконнект потока, мы бы ловили IOException и делали бы ему реконнект. На том уровне, где мы бы знали что делать с хреновым json-ом мы бы ловили JSONException, т.к. я понимаю его именно как ошибку парсинга.

А что получается по факту? Там где, вызывается парсинг, надо что-то знать о вводе-выводе, проверять "а не io ли у него внутри" и если io, отдавать наверх. То есть, дополнительно, в каждом месте, добавлять десяток строк кода. В результате у нас мухи от котлет отдельно уже не будут.

Или же (в зависимости от того, что у нас куда вложено), там, где у нас чтение, ВНЕЗАПНО приходится знать еще и JSONException, потому что это может оказаться на самом деле io. При этом если у нас, например, кроме json-а добавится хреновая имплементация bsjon в том же говноситле - со своим BSONException, то нам понадобится менять код нашего читателя, добавляя в него перехват еще и BSONException с проверкой а не io ли у него внутри. В особо запущенных случаях, у него внутри может оказаться не io, но снова ABCException, внутри которого BLALALAException, внутри которого уже io. Кто не верит что так бывает - недостаточно фрилансил, работая с чужим кодом. Тут уже без рекурсивного парсера, через рефлексию вытягивающего заврапленное IOException на любом уровне, не обойтись. Но вот беда - такой парсер тоже может бросать исключения...

Ну или можно поправить код в либе. Это уже кому как. :))


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


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