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, смысл или один из методов был бы предпочтительным?