Monotouch Global Обработка исключений
У меня появляется неприятная ошибка в дикой природе, и я не могу на нее наложить. Есть ли способ иметь глобальный блок Try/Catch или способ справиться с любым исключением, которое не доступно в Monotouch.
Можно ли просто обернуть UIApplication.Main(args)
в try catch?
После того, как исключение поймано, Id хотел бы показать UIAlertView для отображения результатов.
Любая помощь?
Ответы
Ответ 1
Вы можете перенести UIApplication.Main(args) в try {} catch {}, но вы не сможете показать UIAlertView в этот момент, так как мы размотали весь стек, включая весь пользовательский интерфейс. Что вы можете сделать, это зарегистрировать исключение в файле сбоя в папке "Документы" вашего пакета приложений и показать, что при следующем запуске или загрузке его в веб-службу.
Ребята Exceptioneer работали над поддержкой MonoTouch, что может быть интересно изучить.
Ответ 2
У меня был успех с использованием обработчика необработанных исключений, т.е. события AppDomain.CurrentDomain.UnhandledException
. Похоже, что они улавливают многие (но не все) необработанные исключения. Похоже, что сбои, которые находятся в неуправляемом коде, могут привести к сбою приложения без вызова этого события.
Geoff: захватил бы это событие в дополнение к catching исключениям, выпавшим из UIApplication.Main
, смысл или один из методов был бы предпочтительным?