|
|
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЛюбители выдирать цитаты из контекста и приводить их в качестве контр аргумента можешь привести контекст, который я якобы опустил и который перестанет делать ограничительное наречие "только" безапелляционным? Blazkowiczchpashaвот тебе еще пример - андроид Давай ещё J2ME вспомним. Android это не Java Platform это конечно все меняет. BlazkowiczТ.е. вообще никак оценить доступную память и размер экрана??? оценить можно, и выбрать разумные значения по умолчанию тоже. нет полной гарантии что исключение все же не возникнет в тот момент когда ты начнешь даунскейлить картинки и выплевывать их в Listview. по-этому его можно перехватить и еще уменьшить размер thumbnail. BlazkowiczЛовить OOME и потом жаловаться что Андроид тормозная платформа? это пример того, когда можно "восстановиться" после исключения. это не значит, что оно выскакивает постоянно. более того, оно может возникнуть лишь каждый надцатый раз после смены ориентации, что в нормальной ситуации никогда не происходит - и тем не менее. теперь разрешаю прочитать лекцию о том, какая чудесная система андроид, и какие кривые руки у тех, кто под него пишет. BlazkowiczВаше же новое утверждение сводится к тому что "программа должна работать так как задумано". С этим нет смысла спорить.я всего лишь спросил, по каким причинам модулю не стоит знать про IOException. причем спросил не подкола ради, а из любопытства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:08:43 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpasha, ну зачем так усложнять код. Нехватка памяти обычно означает фатальную ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:11:46 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
ОзверинЯ думал это я адский гонщик, точнее, велосипедист..но вы превзошли... вы пацаны все такие умные шо аш песец. вам видно сюда - в официальной статье от создателей (с) говорится ровно про тоже, что и я. там лишь умалчивается, что выбор "оптимальных" размеров не дает гарантии, что исключение вы не хапнете. соответственно у вас есть выбор, либо перестраховки ради уменьшать картинки до таких размеров, что вас заплюют владельцы таблетов, либо крутиться. весь андроид это аццкий зоопарк различного железа. чтобы работало если и не везде, то почти везде приходится крутиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:17:56 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
насчет андроида я согласен с chpasha, и усложнение и тд тут не при чем - это реалии жизни. Если не верите попробуйте:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:19:21 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Petro123chpasha, ну зачем так усложнять код. Нехватка памяти обычно означает фатальную ошибку. в том-то и дело что нет. во первых еще раз повторяю, при правильном подборе размеров исключения почти никогда не бывает. во-вторых если оно и случается, мы уменьшаем размер и все работает прекрасно дальше, для пользователя полностью незаметно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:20:36 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaя всего лишь спросил, по каким причинам модулю не стоит знать про IOException. причем спросил не подкола ради, а из любопытства. Первая причина. Так как в подавляющем большинстве случаев исключения прокидываются на несколько уровней вверх, то checked IOException нам нужно заявлять во всех методах. Вторая причина - модулю, у которого задача "сохранить данные" используя другой модуль - работы с IO, абсолютно побарабану по какой причине само сохранение обрыгалось. IOException там или NPE. Ему только нужно знать что задача по какой-то причине не выполнена. Хотя если тему ограничить исключительно IOException, то можно ещё поспорить. Потому что он является родителем для доброй половины всех остальных исключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:20:46 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
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. статьятам лишь умалчивается, что выбор "оптимальных" размеров не дает гарантии Блин, ну мастерство демагогии у тебя не отнять. "Вот вам статья, там ровно тоже самое я сказал, но умалчивается о том что я сказал". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:27:06 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaОзверинЯ думал это я адский гонщик, точнее, велосипедист..но вы превзошли... вы пацаны все такие умные шо аш песец. вам видно сюда - в официальной статье от создателей (с) говорится ровно про тоже, что и я. там лишь умалчивается, что выбор "оптимальных" размеров не дает гарантии, что исключение вы не хапнете. соответственно у вас есть выбор, либо перестраховки ради уменьшать картинки до таких размеров, что вас заплюют владельцы таблетов, либо крутиться. весь андроид это аццкий зоопарк различного железа. чтобы работало если и не везде, то почти везде приходится крутиться. Там просто предупреждают, что таки может выбросить и дают пару советов, как минимизировать риски как бе..понятное дело, что аутофмемори может все что угодно выбросить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:28:25 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
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 при работе с картинками сиюминутная опасность, и что их нужно загружать эффективно. перехват исключения и уменьшение размера является повышением эффективности загрузки картинок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:35:16 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpasha, ok. Хочу ещё примеров ремонтирования программы на ходу и добавления в кавычках памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:42:37 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
ОзверинТам просто предупреждают, что таки может выбросить и дают пару советов, как минимизировать риски как бе ну т.е. как бы понятно, что минимизировать риски это не тоже само что исключить оные. нет? т.е.описанный в статье метод все же выкинеть исключение на одном из 100 смартфонов, если я быстро быстро поверну экран туда сюда пару десятков раз. то бишь на одном из 100 смартфонов "оптимальный" размер все таки окажется не оптимальным и вот тогда захват исключения и повторный вызов может решить исход сражения ну или оттянуть конец, а там глядишь андроид прибьет ненужный сервис и с памятью опять станет шоколадно. Озверин..понятное дело, что аутофмемори может все что угодно выбросить в отличии от упомянутой ситуации придется очень сильно постараться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:43:30 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Petro123chpasha, ok. Хочу ещё примеров ремонтирования программы на ходу и добавления в кавычках памяти. JetBrains IDEA вроде пытается не умереть и просит увеличить себе лимит heap size из своего репертуара так сразу больше не припомню. впрочем неверно расценивать фразу "что-то сделать по этому поводу" обязательно как попытку починить. выдать ошибку в лог и послать мыло тоже себе вполне "что-то сделать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:49:09 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaОзверинТам просто предупреждают, что таки может выбросить и дают пару советов, как минимизировать риски как бе ну т.е. как бы понятно, что минимизировать риски это не тоже само что исключить оные. нет? т.е.описанный в статье метод все же выкинеть исключение на одном из 100 смартфонов, если я быстро быстро поверну экран туда сюда пару десятков раз. то бишь на одном из 100 смартфонов "оптимальный" размер все таки окажется не оптимальным и вот тогда захват исключения и повторный вызов может решить исход сражения ну или оттянуть конец, а там глядишь андроид прибьет ненужный сервис и с памятью опять станет шоколадно. Озверин..понятное дело, что аутофмемори может все что угодно выбросить в отличии от упомянутой ситуации придется очень сильно постараться Ну честно сказать, расчитать кол-во картинок нужным размером на заданном экране - не такая уж и проблема. Allocate можно сделать для 1й картинки, умножить на предполагаемое кол-во и прикинуть размер занимаемой памяти же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:50:37 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaты видишь где-то расчет формулы размера, который система сможет переварить? Размер требуемый для рендера bitmap оценить можно достаточно точно. Вопрос только про свободную память. Вроде тоже инфа доступная. Что именно вызывает сложности? chpashaа с учетом неизвестного количества объектов, показываемых одновременно? Это как? Программа не знает сколько ей показывать? Или не может прикинуть по размеру экрана? Или что? chpashaв примере передается размер 100х100. Откуда взялись эти цифры? В примере выводится строка "Hello World!". Откуда взялась эта строка? КО сообщает что это просто пример. chpashaЕсть ли уверенность, что битмапы такого размера проканают всегда и везде? что будет результатом того, что они не проканали? Размер вычисляется в зависимости от доступной памяти и разрешения экрана. Из этого размера получаем допустимое разрешени для thumbnail. chpashaв статье говорится о том, что OutOfMemory при работе с картинками сиюминутная опасность, и что их нужно загружать эффективно. перехват исключения и уменьшение размера является повышением эффективности загрузки картинок. Я прочитал статью, поэтому способен сравнить с тем что ты говоришь. Не нужно мне пересказывать что там написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:51:00 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaPetro123chpasha, ok. Хочу ещё примеров ремонтирования программы на ходу и добавления в кавычках памяти. JetBrains IDEA вроде пытается не умереть и просит увеличить себе лимит heap size из своего репертуара так сразу больше не припомню. впрочем неверно расценивать фразу "что-то сделать по этому поводу" обязательно как попытку починить. выдать ошибку в лог и послать мыло тоже себе вполне "что-то сделать". Кстати да, так и делает ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 16:51:17 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaJetBrains IDEA вроде пытается не умереть JVM и так не умирает при нехватке памяти. Если проблема только в текущем потоке, то OOME его эффективно обрубает. Если проблема более глобальная, тот тут уже ничего не поможет. chpashaи просит увеличить себе лимит heap size Т.е. прокидывает исключение на верхний уровент - GUI\Uncaught и показывает сообщение пользователю. OOME никак не чинится в том месте где он произошел, есть речь про IDEA. chpashaвыдать ошибку в лог и послать мыло тоже себе вполне "что-то сделать". Понимаешь, если выдавать в лог и посылать мыло каждый раз "на месте", то это приведет к тому что админ будет получаить по 5 email-ов на одну ошибку. Так как "в подавляющем большинстве случаев" таки нужно ещё исключением сообщить о проблеме тому кто вызвал текущий метод. Ну, и проект будет испещрен кодом вида Код: java 1. 2. 3. В старых версиях JBoss с логированием было именно так. В результате причину найти достаточно сложно. Нужно из всех исключений в логе найти самое первое, и в нем найти корневой cause. А если, не дай бог, кто-то "догадался" не вложить cause. Но придется листать все залогированые исключения, надеясь найти только то где действительный cause указана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:00:46 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
Blazkowiczchpashaты видишь где-то расчет формулы размера, который система сможет переварить? Размер требуемый для рендера bitmap оценить можно достаточно точно. Вопрос только про свободную память. Вроде тоже инфа доступная. Что именно вызывает сложности? ну например узнать сколько конкретно выделили твоему приложению. ты ведь не думаешь, что андроид щедро отмеряет каждому все что есть? и даже тогда нет уверенности в том, что после вычисления оптимального размера и ресайза первых двух картинок для третьей останется планируемый размер. Blazkowiczchpashaа с учетом неизвестного количества объектов, показываемых одновременно? Это как? Программа не знает сколько ей показывать? Или не может прикинуть по размеру экрана? Или что? [терпеливо] это так, что когда ты показываешь список объектов в ListView очевидно что рендерятся они не все, а только некоторые. сколько конкретно, зависит как минимум от реализации ListView, размеров твоего экрана, пропорций каждого элемента. Blazkowiczchpashaв примере передается размер 100х100. Откуда взялись эти цифры? В примере выводится строка "Hello World!". Откуда взялась эта строка? КО сообщает что это просто пример. хватит паясничать. это как-то странно сочетается с попыткой общения на Вы - вызывает когнитивный диссонанс. BlazkowiczЯ прочитал статью, поэтому способен сравнить с тем что ты говоришь. Не нужно мне пересказывать что там написано. пока что ты рассуждаешь о сферических конях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:14:14 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТ.е. прокидывает исключение на верхний уровент - GUI\Uncaught и показывает сообщение пользователю. OOME никак не чинится в том месте где он произошел, есть речь про IDEA. это был ответ на просьбу о примере починки. а ты со своим "прокидывается" все никак не угомонишься. Blazkowiczchpashaвыдать ошибку в лог и послать мыло тоже себе вполне "что-то сделать". Понимаешь, если выдавать в лог и посылать мыло каждый раз "на месте" я не понимаю, ты же толковый. только сегодня тупишь, или меня злить пытаешься? "на месте" означает не место возникновения исключения, а как раз таки место где ошибку наиболее целесообразно обработать. это отвлекаясь от того, что в процитированной фразе (да и всем посте, из которого она взята) вообще "на месте" нету. это про вырывание из контекста. BlazkowiczНу, и проект будет испещрен кодом вида Код: java 1. 2. 3. ясно, аппендеры у нас уже отменили. а если ошибку в базу надо записать, то вызов видимо будет выглядеть как logAndPersist. видимо сегодня просто не твой день, да? ну или азарт молодецкий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:27:17 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaну например узнать сколько конкретно выделили твоему приложению. ты ведь не думаешь, что андроид щедро отмеряет каждому все что есть? Т.е. соответствующий API в Android отсутствует в принципе. Ты это хочешь сказать? Или нахрен нужен такой API, который мне вернет количество доступной памяти, которое я не могу использовать. chpashaи даже тогда нет уверенности в том, что после вычисления оптимального размера и ресайза первых двух картинок для третьей останется планируемый размер. Да, в пучине полной неизведанности о размере памяти и количестве картинок остаётся только гадать. chpashaзависит от реализации ListView Ещё один мистический фактор. Программа не знает какую реализацию ListView она использует и отсюда не может оценить количество картинок. chpashaхватит паясничать. это как-то странно сочетается с попыткой общения на Вы - вызывает когнитивный диссонанс. Твои попытки перейти на демагогию не располагают меня к другому стилю общения. chpashaпока что ты рассуждаешь о сферических конях. Смотри как зацепился. Хоть бы на один пост по теме ответил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:33:59 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaясно, аппендеры у нас уже отменили. Да похер. Не везде нормальные логгеры просто. Некоторые тупо логируют в файл и другого не умеют. Приходится извращаться. chpashaа если ошибку в базу надо записать, то вызов видимо будет выглядеть как logAndPersist. Ну, смотри. Тебе самому по сути сказать нечего. Как не поглумиться с такого? Ну, будет аппендер. Будет 5-10 писем на одно исключение. chpashaвидимо сегодня просто не твой день, да? ну или азарт молодецкий. У меня каждый день мой и азарт никуда не девался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:38:22 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТ.е. соответствующий API в Android отсутствует в принципе чтобы не быть категоричным - мне о подобной возможности не известно (имеется в виду узнать из аппа сколько ему доступно всего и сколько еще свободно). знаю только, что выделяемый объем от устройства к устройству и от версии к версии варьирует. Blazkowiczchpashaзависит от реализации ListView Ещё один мистический фактор. Программа не знает какую реализацию ListView она использует и отсюда не может оценить количество картинок.т.е. что кол-во версий андроида строго больше одной - это для тебя открытие? и соответственно реализация ListView в версии 2.1 не обязана быть идентичной с 4.1? Blazkowiczchpashaхватит паясничать. это как-то странно сочетается с попыткой общения на Вы - вызывает когнитивный диссонанс. Твои попытки перейти на демагогию не располагают меня к другому стилю общения. ясно Blazkowiczchpashaпока что ты рассуждаешь о сферических конях. Смотри как зацепился. Хоть бы на один пост по теме ответил. по какой теме? мы от темы топика уползли уже очень далеко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:43:21 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, смотри. Тебе самому по сути сказать нечего. с учетом того, что ты мне приписал утверждение, которого я не говорил и теперь меня же за него азартно разоблачаешь :) ? что тут скажешь. Blazkowicz Как не поглумиться с такого? Ну, будет аппендер. Будет 5-10 писем на одно исключение. да-да, я как раз об этом выше написал. Blazkowiczи азарт никуда не девался. что да то да. наш паровоз летит вперед и все такое. ну ты эта, еще читай иногда, что тебе в ответ пишут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 17:47:53 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
странный вообще спор. Смешали всё, люди, кони, учётки, игрушки и андроиды. Политика исключений везде разная и зависит от многих факторов. - при БЛ на примере веба и программа учётного типа - нужно пробрасывать на самый верх, т.к. там логика железобетонно прошита в коде. Не будет там слов: ".. если исключение по банку, то провести деньги по СМС. - если это игрушка для ВСЕХ видов экранов и разрешений, то уровень АРI с экраном должен владеть и рулить всеми исключенимями. Тогда в ТЗ пишут - должна работать на памяти 512 Мбт и выше. А попытки отсебятины и делать кусок кода на все случаи жизни - велосипеды. Ведь не зря, во всех мануалах пишут о 3-х ???? типах исключений и ошибках. А также логах)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 18:15:59 |
|
||
|
Несколько ексепшнов разных уровней
|
|||
|---|---|---|---|
|
#18+
chpashaможешь привести контекст, который я якобы опустил и который перестанет делать ограничительное наречие "только" безапелляционным? "только" относилось к примеру который я привел перед этим предложением, а не к тому что исключения никогда нельзя обработать на месте, а "только" пробрасывать наверх. Это и есть цитата выдраная из контекста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2012, 18:34:00 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37992215&tid=2130794]: |
0ms |
get settings: |
18ms |
get forum list: |
25ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
49ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
106ms |
get tp. blocked users: |
3ms |
| others: | 381ms |
| total: | 613ms |

| 0 / 0 |
