我有xamarin.android
xamarin.insights
综合。
现在每次我手动处理错误(尝试/捕获)我都会添加有关环境的信息(暂存/生产):
try
{
ExceptionThrowingFunction();
}
catch (Exception exception)
{
exception.Data["Environment"] = "staging";
throw;
}
但如果xamarin.insights
本身处理错误(如果发生崩溃),则会丢失此信息。
如果发生崩溃,可以添加其他异常数据吗?
答案 0 :(得分:1)
通过阅读您提到的文档页面引用,我仍然会觉得您必须调用 .Report 方法以及: -
Insights.Report(exception, new Dictionary <string, string> {
{"Some additional info", "foobar"}
});
我相信他们在这个例子中说的是: -
try {
ExceptionThrowingFunction();
}
catch (Exception exception) {
exception.Data["AccountType"] = "standard";
throw;
}
如果遇到任何例外,您是否有能力打包以后可以发送到 Insights服务器的其他信息,因为数据< / strong> 例外的属性只是键/值词典。
因此,如果你有几个深层的例外,你可以选择重新抛出例外,其中包含的其他信息将在稍后发送给< strong>洞察服务器。
在更高级别,您可以采用在调用层次结构中更深层次的例外,然后调用 Insights.Report ,其中包含: -
Insights.Report(
{the rethrown exception in your higher up try..catch block},
{rethrown exception}.Data
);
然后会发送以前捕获的所有其他键/值信息。
从您的问题的最后一部分看,虽然看起来您对数据分析处理感兴趣并且在未处理时自动发送此附加 .Data 例外即可。
如果当前没有发送,那么可能会建议他们也可以发送这个?因为这听起来是一个可行的请求,可以自动发送未处理的异常。
更新1: -
是的 - 我了解您所指的未处理的异常方案。
我没有直接处理这个组件,因此可能会有 hooks / event handlers 或已定义的内容,您可以在其中使用,并在发送之前执行一些自定义代码。
如果没有,那么可能建议他们将其作为Beta产品加入?
另外,你仍然可以通过捕获 未处理的异常 之前来实现 。但是,您必须在每个平台上对此进行编码。
例如,在应用课程中 Windows Phone ,Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
可以补充异常这个额外的 .Data 。
对于 Android ,您可以查看描述如何捕获uncaughtException 的post,它将帮助您捕获未处理的异常< /强>
是否只是在上面的处理程序中补充例外就足够了,这取决于他们如何将他们的钩子写入其中,至于它的表现如何以及在执行之前是否先执行。
您必须尝试查看是否存在。如果它表现不佳,允许您在自动调用数据洞察之前补充额外数据,则可以使用另一个后备解决方案来执行。报告在这些未处理的异常处理程序中手动调用,以使其工作并补充额外的 .Data 以实现您的目标。