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

Strange exceptions stack trace in Xamarin Studio

获取下一个奇怪的 Xamarin Studio 行为: 我在某些 class.

的特定行中抛出硬编码异常

结果如下: 总是在 Main class 中捕获异常,而堆栈跟踪中没有我的特定行

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

您必须捕获并处理此异常。每个 Task 对象都有一个 Exception property ,它将包含异步执行期间发生的所有异常。如果您正确使用 await,这些异常将被解包。您的方法具有 void return 类型,因此无法等待。因此,异常将保持未检测到,直到有什么东西处理它。在某些平台上(例如 windows Phone),您永远不会注意到出现问题。

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

Steven Clery 在任务和异步编码方面有很多优点articles