420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
1 | |
Обработать любую ошибку не закрывая программу12.02.2014, 06:36. Показов 932. Ответов 9
Метки нет (Все метки)
Возможно ли (тяжело ли) подобное? В программе сотня методов и возможно допустить ошибку в одной из них. Или не обработать (полениться или не предусмотреть) все через try...
Умею (нашел модуль/класс и переработал не до конца поняв) обрабатывать глобальную ошибку вылетания программы - выводит код ошибки в диалог и записывает в текстовик, отправляет в LogCat. Оригинальный модуль (убрал это) предлагал даже ошибку по почте отправить... Но после этого модуля программа все-равно закрывается... Можно ли ПРОИГНОРИРОВАТЬ(обработать/записать в файл) ошибку в методе но не закрывать окно/программу? Не нравится что заполнив кучу полей клиент нажимает редкую (не доделаную) кнопочку и должен набирать все заново перезапустив программу.
0
|
12.02.2014, 06:36 | |
Ответы с готовыми решениями:
9
Сортировка и обновление данных не закрывая программу Отловить любую ошибку Написать программу, в которой порожденный процесс запускает на исполнение новую (любую) программу. Обработать ошибку try except |
12.02.2014, 17:36 | 2 | ||||||||||
Tester64, может Вам поможет ACRA , но я не уверен, что это точно поможет (это система оповещения о crash'ах).
А ещё можно попробовать так.
1
|
12.02.2014, 18:05 | 5 |
YuraAAA, окей, может я не совсем удачно выразился, а может и не прав.
Когда мы получаем OOM, это значит, что память кончилась, и больше нам не выделят. Что делать дальше? Не создавать новых объектов - толку тогда от того что мы словили эту ошибку, попросить gc очистить память - не факт, что он нас послушает? Добавлено через 3 минуты А ведь есть еще нейтив, который сразу крэшит VM.
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
12.02.2014, 18:37 [ТС] | 7 |
2YuraAAA: Спасибо. Попробую...
Не вижу разницы между Error(?) и Exception... Представляю себе как глобальный try на каждый метод. Например обработку на нажатие кнопки. Что-бы внутри обработки не случилось(деление на ноль, ошибка записи/чтения, неправильный запрос), прерваться должна только ЭТА обработка, а не закрыться вся форма (или вся программа). Пока не представляю себе как, но сильно привык к подобному в винде. А на сложных программах это просто необходимо... Как и теоретически на программах разрабатывамых КОМАНДАМИ программистов - "я не могу отвечать за ошибки соседа - моя часть не глючит - платите мне зарплату"
0
|
12.02.2014, 18:44 | 8 |
В таких случаях, обращаемся к докам:
http://docs.oracle.com/javase/... Error.html
0
|
3 / 3 / 1
Регистрация: 18.09.2013
Сообщений: 19
|
|
13.02.2014, 11:54 | 9 |
Реальность такова, что охватить все большое приложение тестами, не представляется возможным.
Стоимость и время разработки сильно увеличивается. Кроме того все варианты ошибок тестами не перекроешь. А в общем то, я считаю, что любую ошибку приложения разработчик должен иметь возможность перехватить. Как бы там красиво не рассуждали в документации, это недостаток. Приложения становяться все сложнее. Падение в одном модуле не значит, что все приложение не валидно. Например, пользователь набрал большой текст, хочет выполнить какую-нибудь комманду, не связанную с текстом, а приложение падает. Текст потерян. Так вот пользователю наплевать, как красиво мы рассуждали про правильность разделения по типам ошибок и какую красивую архитектуру мы построили. Потому что ПОЛЬЗОВАТЕЛЬ ВСЕГДА ПРАВ!
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
13.02.2014, 17:44 [ТС] | 10 |
Не помогло! Все что это делает - перед вылетанием выводит сообщение. Причем ТОЛЬКО в той форме где было определено в OnCreate. На другие активити не распространяется. У меня как раз так-же было перехвачено раньше. Просто класс был покруче и мог получать полный текст ошибки и отсылать его. Но завершение программы пресечь не получается.
Теоретически стоило бы сохранять по таймеру этот текст, но конечно логичнее будет пресечь зависание. Конечно можно КАЖДЫЙ метод начинать и заканчивать try{ } catch (Exception e) {OnError("ERROR! "+e.toString())} но когда методов сотни... Насколько я понял это тот-же обработчик, но с отправкой ошибки на гугл-док. Предпочитаю не оповещать гугл о своих ошибках!
0
|
13.02.2014, 17:44 | |
13.02.2014, 17:44 | |
Помогаю со студенческими работами здесь
10
обработать ошибку Обработать ошибку Как обработать ошибку IdTCPClient обработать ошибку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |