Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.01.2012, 13:54
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 1  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
По умолчанию Мониторинг ошибок в крупном приложении

Добрый день, возникла следующая проблема:
есть код. множество классов, компонентов и тд. но нет обработки ошибок вообще. как лучше оформить обработку ошибок максимально, с полным описанием ошибки в минимальные сроки? одно из решений - регэкспом пройтись по всему коду и воткнуть
Код AS3:
function func_name():void {try{
 
	null.property = 5;
 
}catch(e:*) {Log.Log("func_name и тд")}}
в каждую функцию. что думаете по этому поводу? как вообще лучше реализовывать обработку ошибок в крупном приложении на as3 ?

спасибо.


---
loaderInfo.uncaughtErrorEvents не подходит т.к. в релизном плеере невозможно получить стактрейс, а нужно знать в какой функции произошла ошибка


Последний раз редактировалось nuToH; 26.01.2012 в 14:09.
Старый 26.01.2012, 14:02
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 2  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Создайте глобальный класс логирования, и сделайте его singleton. И обращайтесь,во Flex есть Logger.
Код AS3:
Logger.getLogger("myLogger" || "errorLogger" || "noticeLogger").log("Error loading" + data.url);
Как-то так
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 26.01.2012, 14:43
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 3  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
спасибо.
а как определять сам факт ошибки? как вы относитесь к повсеместному использованию try catch ? (абс в каждой функции)

Старый 26.01.2012, 14:46
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 4  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
А зачем его использовать в каждой функции( не все функции, кидают исключения )?
Отлавливайте ошибки в тех местах где они могут появиться из-за данных пришедших из вне : битый url, корявое имя пользователя, пропал интернет и т.п. От себя могу добавить, что использую try крайне редко, чаще всего при парсинге XML. На остальное нужно, просто вешать события ошибок.
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 26.01.2012, 15:04
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 5  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
просто код уже есть и его много, фиг найдешь места где может быть ошибка, а где нет... =(

Старый 26.01.2012, 15:13
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 6  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Код AS3:
UncaughtErrorEvent.UNCAUGHT_ERROR
для плеера выше версии 10,1

Старый 26.01.2012, 15:22
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 7  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
Цитата:
Сообщение от zuxul Посмотреть сообщение
Код AS3:
UncaughtErrorEvent.UNCAUGHT_ERROR
для плеера выше версии 10,1
спасибо..
была бы возможность определить откуда ошибка в релизном плеере - было бы то, что нужно!

Старый 26.01.2012, 15:24
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Хороших вариантов оссобо нету т.как нужная информация, такая как, например, стек трейс отсутствует в релизном плеере. Но уж если что-то делать регулярными выражениями, так это именно стек трейс. Т.е. не нужно оборачивать каждую функцию в try-catch, это бессмысленно и беспощадно, т.как скорее всего нарушит логику программы, а даже если и нет, заставит ее выполнятся дольше.
Что да можно было бы сделать - первой строкой в каждой функции добавить имя функции на стек (можно даже с аргументами), а на каждом выходе (return, throw) из функции удалить ее со стека. И слушать UncaughtErrorEvent - при получении события - записать информацию которая в текущий момент была на стеке и обнулить стек. Единственная проблема - если есть функции которые ловят ошибки где-то гораздо выше по стеку - тогда прийдется в catch{} блоке искать сколько же именно убрать со стека (не сложно, но и не однострочник) - т.е. найти самое последнее вхождение названия текущей функции в "историю" хранящуюся на стеке.

Логгер, вне зависимости от реализации (я не вижу смысла делать его синглоном, например), вещь безусловно полезная. Но идея его использования заключается в том, чтобы писать внятные сообщения о том что произошло в программе - от того, что вы запишете, что случилась ошибка ясности это вам особо не прибавит. Традиционно сообщения в лог пишутся об ошибках которые программист предвидел. Например, не загрузились картинки - нет возможности запустить галерею картинок т.как показывать нечего и т.п.
__________________
Hell is the possibility of sanity

Старый 26.01.2012, 15:24
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 9  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Debug и ловите на здоровье.
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 26.01.2012, 17:48
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 10  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
Всем спасибо!
wvxvw, отличная идея!) буду использовать.)


Последний раз редактировалось nuToH; 26.01.2012 в 17:54.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.