2011-01-28 188 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有意義或將其中一種方法是首選?