有时我会从objective-c代码内部得到异常。在我的例子中,这些异常并不严重,我希望应用程序继续工作。问题是我如何处理这些异常?
例如,当我使用GeoCoder类时,我的应用程序会时不时地崩溃。我真的不关心地理编码器是否无法对位置进行地理编码,也不想让我的应用程序存活下来。在try-catch块中包含地理编码器调用并不能解决问题。
任何帮助都将不胜感激!
发布于 2012-05-11 18:15:40
MonoTouch在一定程度上尝试将ObjC异常转换为托管异常。这是通过为ObjC异常添加一个未处理的异常处理程序来完成的,并在其中引发一个托管异常。这在辅助线程上有效,但在主线程上不起作用,因为iOS在其主运行循环中有一个try-catch处理程序,如果有任何异常到达它,它将杀死你的应用程序(换句话说,异常被处理,所以它永远不会到达MonoTouch的未处理异常处理程序)。
最好的方法是从一开始就避免ObjC异常(苹果的文档指出,ObjC异常应该只在真正异常的情况下使用,因为它们有很多问题-例如,内存泄漏非常常见)。
显然不可能避免所有的ObjC异常,所以我们试图为那些仍然发生这种情况的情况找到解决办法。为您的特定用例完成此操作的最好方法是创建一个完整的测试用例,并在此处打开一个bug报告:http://bugzilla.xamarin.com,并附加测试用例。
https://stackoverflow.com/questions/10546884
复制相似问题