Я пытался отображать ошибки в текстовом поле в приложении, чтобы пользователи могли сообщать об ошибках.
У меня был некоторый успех, используя этот код, который я нашел в stackoverflow. Он используется на верхнем уровне приложения, но не работает на устройстве:
//start code
this.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, errorHandler);
function globalErrorHandler(event:UncaughtErrorEvent):void
{
var message:String;
//check for runtime error
if (event.error is Error)
message = (event.error as Error).getStackTrace();
//handle other errors
else if (event.error is ErrorEvent)
message = (event.error as ErrorEvent).text;
else
message = event.error.toString();
//do something with message (eg display it in textfield)
myTextfield.text = message;
}
//end code
Сначала это не сработало на устройстве, и я подумал, что это произошло потому, что при возникновении ошибки при разработке на компьютере flashplayer отображал всплывающее окно ActionScript с ошибкой. Вам нужно будет нажать «закрыть все» или закрыть, а затем будет вызван globalErrorHandler, а затем ошибка будет записана в текстовое поле. Я думал, что это мешает ему появиться на устройстве. Однако, добавив event.preventDefault (), я смог подавить всплывающее окно ActionScript при разработке на рабочем столе, и ошибка была успешно записана в текстовое поле. Однако на устройстве andriod этого не произошло. Все равно просто зависает на ошибке. Как будто событие ошибки по умолчанию не может быть подавлено на android.
Спасибо за ваше время. Любая помощь приветствуется!
РЕДАКТИРОВАТЬ 22/09/2017: я наконец смог увидеть ошибку на устройстве. Это было связано с тем, что при публикации на настольных компьютерах отображалась ошибка. Однако на устройстве поведение было другим, и что-то закрывало текстовое поле, и, переместив его на передний план при ошибке, я смог это увидеть. Тем не менее, я все еще вижу, что некоторые ошибки глубже в иерархии классов не обнаруживаются.