2011-01-28 157 views
14

我在野外出现了一个令人讨厌的bug,我无法将它放在手指上。有没有办法建立一个Global Try/Catch块,或者一种方法来处理任何MonoTouch中没有提到的异常。Monotouch全局异常处理

我可以将UIApplication.Main(args)换成try catch吗?

发现异常后,Id想显示一个UIAlertView来显示结果。

任何帮助?

+0

不确定这是否在Monotouch中,但在您要使用的窗口上http://msdn.microsoft.com/en-us/library/system.windows.application.unhandledexception(v = vs.95).aspx – Nate 2011-01-28 16:22:41

回答

14

您可以将UIApplication.Main(args)包装在try {} catch {}中,但由于我们解开了包括所有UI的整个堆栈,因此您无法在此处显示UIAlertView。你可以做的是将异常记录到应用程序包的Documents文件夹中的崩溃文件中,并在下次启动时显示或者将其上传到Web服务。

Exceptioneer家伙们也在研究MonoTouch支持,这可能值得研究。

+0

嘿杰夫,在下面的答案中看到你的问题... – Ethan 2011-01-31 21:10:09

+1

试图解决,如果Exceptioneer是遗弃或不... – tomfanning 2011-04-15 11:12:26

1

我已经成功使用未处理的异常处理程序,即AppDomain.CurrentDomain.UnhandledException事件。这似乎捕获了许多(但不是全部)未处理的异常。看起来,非托管代码中的崩溃可能会导致应用程序失败,而无需调用此事件。

杰夫:捕获此事件除了捕捉异常掉落UIApplication.Main有意义或将其中一种方法是首选?