如何使用Bugsense捕获特定代码中的异常?

时间:2014-07-07 19:12:25

标签: c# windows-phone-8 bugsense

我已将BugSense添加到我的Windows Phone应用程序并相应地修改了app.xaml.cs。但是,我知道有些用户遇到崩溃但BugSense没有看到它。 BugSense看到新的会话,不知道什么,我知道许可是正确的。

我相信崩溃发生在这段代码中,特别是对于我认为的webclient。我可以添加到此代码中,以便在发生某些情况时,BugSense会报告它吗?

 private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        LongListSelector selector = sender as LongListSelector;

        // verifying our sender is actually a LongListSelector
        if (selector == null)
            return;

        SoundData data = selector.SelectedItem as SoundData;

        // verifying our sender is actually SoundData
        if (data == null)
            return;


        if (data.IsDownloaded)
        {
            this.PlaySound(IsolatedStorageFile.GetUserStoreForApplication().OpenFile(data.SavePath, FileMode.Open, FileAccess.Read, FileShare.Read));
        }
        else
        {
            if (!SimpleIoc.Default.GetInstance<INetworkService>().IsConnectionAvailable)
            {
                MessageBox.Show("You need an internet connection to download this sound.");
            }
            else
            {
                WebClient client = new WebClient();

                client.DownloadProgressChanged += (senderClient, args) =>
                    {
                        Dispatcher.BeginInvoke(() =>
                            {
                                data.DownloadProgress = args.ProgressPercentage;
                            });
                    };

                client.OpenReadCompleted += (senderClient, args) =>
                {
                    using (IsolatedStorageFileStream fileStream = IsolatedStorageFile.GetUserStoreForApplication().CreateFile(data.SavePath))
                    {
                        args.Result.Seek(0, SeekOrigin.Begin);
                        args.Result.CopyTo(fileStream);

                        this.PlaySound(fileStream);
                        data.Status = DownloadStatus.Downloaded;
                    }

                    args.Result.Close();
                };

                client.OpenReadAsync(new Uri(data.FilePath));
                data.Status = DownloadStatus.Downloading;
            }
        }

        selector.SelectedItem = null;
    }

1 个答案:

答案 0 :(得分:0)

我刚刚开始在我的WP8应用程序中使用BugSense,并且我非常深刻地了解它如何捕获未处理的异常,而不仅仅是我的App.xaml.cs文件中的单行代码:

public App()
{
    BugSenseHandler.Instance.InitAndStartSession(new ExceptionManager(Current), RootFrame, "YourBugSenseApiKey");
    ...
}

因此,根据我的经验,BugSense应该为您捕获这些例外,而无需您提供任何额外的代码。

你怎么知道这些崩溃?它来自Windows Phone开发人员中心吗?如果是这样,那么在添加BugSense之前,您可能仍会看到已安装旧版应用程序的用户报告崩溃。

我发现在启动时从应用程序本身检查新的应用程序版本并提醒用户是让人们保持最新状态的好方法。许多用户可能无法长时间访问Windows Phone应用商店,甚至可能无法将您的应用更新到最新版本,因此您很可能在旧版本上拥有大量用户。