获取下一个奇怪的Xamarin Studio行为:我在某些类的特定行中抛出硬编码异常.
接下来是结果:始终在Main类中捕获异常,而不在堆栈跟踪中使用我的特定行
该方法OpenRelatedView()
似乎是从非UI线程调用的,因为您InvokeOnMainThread()
在那里使用.所以我的假设是你在Task.Run()
某处使用它来调用它.所有异步代码都将隐式包装到try-catch中.
您必须捕获并处理此异常.每个Task
对象都有一个Exception
属性,该属性将包含异步执行期间发生的所有异常.如果使用await
正确,则会解开这些异常.您的方法具有void
返回类型,因此无法等待.因此,除非事情得到解决,否则该例外将不会被发现.在某些平台上(例如Windows Phone),你永远不会注意到出了什么问题.
但是,使用Xamarin.iOS,在应用程序根级别存在所有未捕获异常的处理程序,这就是为什么你会在那里看到异常的原因.
Steven Clery有很多关于任务和异步编码的好文章.