Xamarin Studio中的奇怪异常堆栈跟踪

时间:2017-01-26 20:36:18

标签: c# ios xamarin xamarin-studio

enter image description here 获取下一个奇怪的Xamarin Studio行为: 我在某些类的特定行中抛出了硬编码异常。

enter image description here 结果是下一个: 始终在Main类中捕获异常,而不在堆栈跟踪中使用我的特定行

1 个答案:

答案 0 :(得分:5)

方法OpenRelatedView()似乎是从非UI线程调用的,因为你在那里使用InvokeOnMainThread()。所以我的假设是你在某个地方使用Task.Run()来调用它。所有异步代码都将隐式包装到try-catch中。

此异常必须由您捕获并处理。每个Task对象都有Exception property,其中包含异步执行期间发生的所有异常。如果您正确使用await,则会解开这些例外情况。您的方法具有void返回类型,因此无法等待。因此,除非事情得到解决,否则该例外将不会被发现。在某些平台上(例如Windows Phone),你永远不会注意到出现了问题。

但是,使用Xamarin.iOS,在应用程序根级别存在所有未捕获异常的处理程序,这就是为什么您会在那里看到异常的原因。

Steven Clery对任务和异步编码有很多好articles