在Monotouch中处理ObjC异常

5
有时候在我的 Objective-C 代码中会出现异常。在我这个例子里面,这些异常并不是很严重,我希望应用程序能继续运行。
问题是如何处理这些异常呢?
例如,当我使用 GeoCoder 类的时候,我的应用程序偶尔会崩溃。但我并不关心地理编码失败了,同时我希望我的应用程序能够继续运行。将地理编码调用放入 try-catch 块并不能解决这个问题。
非常感谢您的帮助!
1个回答

6
MonoTouch试图在一定程度上将ObjC异常转换为托管异常。这是通过为ObjC异常添加一个未处理的异常处理程序来完成的,然后在其中抛出托管异常。这适用于次要线程,但不适用于主线程,因为iOS在其主运行循环中有一个try-catch处理程序,如果任何异常到达它(换句话说,异常已处理),则会终止您的应用程序,因此它永远不会到达MonoTouch的未处理异常处理程序。
最好的方法是先避免ObjC异常(Apple的文档指出,ObjC异常只应在真正的异常情况下使用,因为它们有许多问题 - 例如,内存泄漏很常见)。
显然无法避免所有ObjC异常,因此我们尝试找到针对仍然发生的那些情况的解决方法。为了在您的特定情况下完成此操作,最好为您创建一个完整的测试用例并在此处打开错误报告:http://bugzilla.xamarin.com,并附上测试用例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接