【问题标题】:Monotouch Global Exception handlingMonotouch 全局异常处理
【发布时间】:2011-06-17 08:40:09
【问题描述】:

我在野外出现了一个讨厌的虫子,我无法解决它。有没有办法拥有全局 Try/Catch 块,或者有办法处理 Monotouch 中未处理的任何异常。

我可以将 UIApplication.Main(args) 包装在 try catch 中吗?

异常被捕获后,我想显示一个 UIAlertView 来显示结果。

有什么帮助吗?

【问题讨论】:

标签: c# ios exception-handling xamarin.ios


【解决方案1】:

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

Geoff:除了捕获 UIApplication.Main 之外的异常之外,捕获此事件是否有意义,或者其中一种方法更受欢迎?

【讨论】:

  • 这并不重要,但是本机代码中的崩溃会让你崩溃。该应用程序此时基本上已损坏,我们无法优雅地处理它。一位 monotouch 社区成员尝试在发布版本中使用 dup2(3) 将 stdout 和 stderr 重定向到一个文件,这样他就可以在下次运行时将崩溃日志上传给自己,这是可以做到的。
【解决方案2】:

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

Exceptioneer 的人也在致力于 MonoTouch 支持,这可能值得研究。

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 2015-12-21
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2016-02-12
    相关资源
    最近更新 更多