Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理xamarin表单项目中已处理的异常?_Xamarin_Xamarin.forms_Hockeyapp_Mobile Center_Visual Studio App Center - Fatal编程技术网

如何处理xamarin表单项目中已处理的异常?

如何处理xamarin表单项目中已处理的异常?,xamarin,xamarin.forms,hockeyapp,mobile-center,visual-studio-app-center,Xamarin,Xamarin.forms,Hockeyapp,Mobile Center,Visual Studio App Center,直到最近,我还在使用Xamarin Insights。我从我的项目中删除了它,因为它显著增加了启动时间和应用程序大小。所以我只剩下两个选择:Hockeyapp和微软的移动中心。这两个版本的问题在于,它们没有任何报告捕获异常的报告功能,这通常是您在xamarin forms项目的try catch中所做的 真令人失望 xamarin insight拥有强大的洞察力,并且运行良好。我想问一下,我们如何在表单项目中报告异常?application insight是一个选项。我曾在其他.net项目中使用

直到最近,我还在使用Xamarin Insights。我从我的项目中删除了它,因为它显著增加了启动时间和应用程序大小。所以我只剩下两个选择:Hockeyapp和微软的移动中心。这两个版本的问题在于,它们没有任何报告捕获异常的报告功能,这通常是您在xamarin forms项目的try catch中所做的

真令人失望

xamarin insight拥有强大的洞察力,并且运行良好。我想问一下,我们如何在表单项目中报告异常?application insight是一个选项。我曾在其他.net项目中使用过,但UI确实不太实用

github上甚至有一个线程


微软表示,我们在这方面已经工作了一年或更长时间,从来没有提供过任何东西,而且一直在贬低任何东西。

我们使用移动中心来报告问题。基本上,在每个catch语句中,我们使用一个静态类来报告问题,如下所示:

public static class EventTrace
{
    public static void Trace(string menuName, string actionName, Dictionary<string, string> parameters = null)
    {
        try
        {
            Dictionary<string, string> tmp;
            if (parameters != null)
                tmp = new Dictionary<string, string>(parameters);
            else
                tmp = new Dictionary<string, string>();

            tmp.Add("GUID", MobileCenter.InstallId.ToString());
            Analytics.TrackEvent(menuName + " - " + actionName, tmp);
        }
        catch (Exception ex)
        {
            Analytics.TrackEvent("Event Trace - Error creating event", new Dictionary<string, string> { { "Exception", ex.ToString() } });
            Analytics.TrackEvent(menuName + " - " + actionName, parameters);
        }
    }

    public static void Error(string menuName, string exception)
    {
        var parameters = new Dictionary<string, string> { { "Exception", exception } };
        var tmp = new Dictionary<string, string>(parameters);
        try
        {
            tmp.Add("GUID", MobileCenter.InstallId.ToString());
            Analytics.TrackEvent(menuName + " - Error", tmp);
        }
        catch (Exception ex)
        {
            Analytics.TrackEvent("Event Trace - Error creating event", new Dictionary<string, string> { { "Exception", ex.ToString() } });
            Analytics.TrackEvent(menuName + " - Error", parameters);
        }
    }
}
公共静态类事件跟踪
{
公共静态无效跟踪(字符串菜单名、字符串actionName、字典参数=null)
{
尝试
{
字典tmp;
if(参数!=null)
tmp=新字典(参数);
其他的
tmp=新字典();
添加(“GUID”,MobileCenter.InstallId.ToString());
Analytics.TrackEvent(Menuame+“-”+actionName,tmp);
}
捕获(例外情况除外)
{
TrackEvent(“事件跟踪-错误创建事件”,新字典{{“异常”,例如ToString()}});
Analytics.TrackEvent(menuName+“-”+actionName,参数);
}
}
公共静态无效错误(字符串菜单名,字符串异常)
{
var参数=新字典{{“异常”,异常};
var tmp=新字典(参数);
尝试
{
添加(“GUID”,MobileCenter.InstallId.ToString());
Analytics.TrackEvent(菜单名+“-错误”,tmp);
}
捕获(例外情况除外)
{
TrackEvent(“事件跟踪-错误创建事件”,新字典{{“异常”,例如ToString()}});
Analytics.TrackEvent(menuName+“-Error”,参数);
}
}
}
我们有用于跟踪的事件和用于捕获错误的事件。在mobile center中,我们基本上可以在事件选项卡中搜索“错误”语句


它对我们有用,希望它对你有用

我们使用移动中心报告问题。基本上,在每个catch语句中,我们使用一个静态类来报告问题,如下所示:

public static class EventTrace
{
    public static void Trace(string menuName, string actionName, Dictionary<string, string> parameters = null)
    {
        try
        {
            Dictionary<string, string> tmp;
            if (parameters != null)
                tmp = new Dictionary<string, string>(parameters);
            else
                tmp = new Dictionary<string, string>();

            tmp.Add("GUID", MobileCenter.InstallId.ToString());
            Analytics.TrackEvent(menuName + " - " + actionName, tmp);
        }
        catch (Exception ex)
        {
            Analytics.TrackEvent("Event Trace - Error creating event", new Dictionary<string, string> { { "Exception", ex.ToString() } });
            Analytics.TrackEvent(menuName + " - " + actionName, parameters);
        }
    }

    public static void Error(string menuName, string exception)
    {
        var parameters = new Dictionary<string, string> { { "Exception", exception } };
        var tmp = new Dictionary<string, string>(parameters);
        try
        {
            tmp.Add("GUID", MobileCenter.InstallId.ToString());
            Analytics.TrackEvent(menuName + " - Error", tmp);
        }
        catch (Exception ex)
        {
            Analytics.TrackEvent("Event Trace - Error creating event", new Dictionary<string, string> { { "Exception", ex.ToString() } });
            Analytics.TrackEvent(menuName + " - Error", parameters);
        }
    }
}
公共静态类事件跟踪
{
公共静态无效跟踪(字符串菜单名、字符串actionName、字典参数=null)
{
尝试
{
字典tmp;
if(参数!=null)
tmp=新字典(参数);
其他的
tmp=新字典();
添加(“GUID”,MobileCenter.InstallId.ToString());
Analytics.TrackEvent(Menuame+“-”+actionName,tmp);
}
捕获(例外情况除外)
{
TrackEvent(“事件跟踪-错误创建事件”,新字典{{“异常”,例如ToString()}});
Analytics.TrackEvent(menuName+“-”+actionName,参数);
}
}
公共静态无效错误(字符串菜单名,字符串异常)
{
var参数=新字典{{“异常”,异常};
var tmp=新字典(参数);
尝试
{
添加(“GUID”,MobileCenter.InstallId.ToString());
Analytics.TrackEvent(菜单名+“-错误”,tmp);
}
捕获(例外情况除外)
{
TrackEvent(“事件跟踪-错误创建事件”,新字典{{“异常”,例如ToString()}});
Analytics.TrackEvent(menuName+“-Error”,参数);
}
}
}
我们有用于跟踪的事件和用于捕获错误的事件。在mobile center中,我们基本上可以在事件选项卡中搜索“错误”语句


它对我们有用,希望它对你有用

在HockeyApp中,您可以通过在catch块中添加事件来跟踪捕获异常的次数。但是,您无法真正发回其他信息。将异常作为事件发送怎么样?它能像字符串一样工作吗?据说有人支持添加字典来包含度量值之类的内容,但我还没有找到一种方法来真正阅读他们网站上的度量值(不过我可能只是做错了什么)。否则,所有事件都有利于跟踪代码行的执行次数。因此,使用HockeyApp,您可以编写一个方法,将异常信息打包到字典中,然后在事件中发送。@cvanbeek如果不使用DI,这似乎是不可能的。我只是尝试使用Microsoft.HockeyApp.HockeyClient.Current.TrackEvent()。它没有崩溃,但我在hockeyappIn的events选项卡下没有看到任何事件。在hockeyappIn中,您可以通过在catch块中添加事件来跟踪捕获异常的次数。但是,您无法真正发回其他信息。将异常作为事件发送怎么样?它能像字符串一样工作吗?据说有人支持添加字典来包含度量值之类的内容,但我还没有找到一种方法来真正阅读他们网站上的度量值(不过我可能只是做错了什么)。否则,所有事件都有利于跟踪代码行的执行次数。因此,使用HockeyApp,您可以编写一个方法,将异常信息打包到字典中,然后在事件中发送。@cvanbeek如果不使用DI,这似乎是不可能的。我只是