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。
方法 OpenRelatedView()
似乎是从 non-UI 线程调用的,因为您正在其中使用 InvokeOnMainThread()
。所以我的假设是你在某处使用 Task.Run()
来调用它。所有异步代码都将隐式包装到 try-catch 中。
您必须捕获并处理此异常。每个 Task
对象都有一个 Exception
property ,它将包含异步执行期间发生的所有异常。如果您正确使用 await
,这些异常将被解包。您的方法具有 void
return 类型,因此无法等待。因此,异常将保持未检测到,直到有什么东西处理它。在某些平台上(例如 windows Phone),您永远不会注意到出现问题。
然而,使用 Xamarin.iOS,在应用程序根级别有所有未捕获异常的处理程序,这就是为什么你会在那里看到异常的原因。
Steven Clery 在任务和异步编码方面有很多优点articles。