Windows Phone App在恢复时出现异常

时间:2011-01-13 16:27:48

标签: windows-phone-7 exception tombstoning

我正在开发一个Windows Phone应用程序。 我将它提交给Microsoft,他们向我发送了一个文件,描述了恢复应用程序时出现的错误(相对于5.2性能和资源管理,点5.2.3)。

要重现错误,我运行应用程序,我从启动按钮开始转到“桌面”并单击“返回”按钮。 之后,visual studio以黄色突出显示此代码中的System.Diagnostics.Debugger.Break();

// Code to execute on Unhandled Exceptions
        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        { 
            if (System.Diagnostics.Debugger.IsAttached)
            {
                // An unhandled exception has occurred; break into the debugger
                System.Diagnostics.Debugger.Break();
            }
        } 

使用堆栈跟踪,我发现最后一个被调用的方法是CallApplicationUEHandler

那么,这是一个众所周知的例外吗?我忘了处理一些例外吗?

以下是CallApplicationUEHandler调用之上的最后三行输出:

first chance exception 'System.ArgumentNullException' in Microsoft.Phone.Controls.dll
first chance exception 'System.ArgumentException' in System.Windows.dll
first chance exception 'System.ArgumentException' in System.Windows.dll

构造函数:

对于MainPage:

public MainPage()
        {
            journal.Debug(string.Format("Entrée méthode {0}", new StackTrace().GetFrame(1).GetMethod().Name));
            InitializeComponent();

            Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded);
        }



private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        mainVM = new MainViewModel();
        DataContext = mainVM;
    }

对于App:

public App()
        {
            // Global handler for uncaught exceptions. 
            // Note that exceptions thrown by ApplicationBarItem.Click will not get caught here.
            UnhandledException += Application_UnhandledException;

            // Standard Silverlight initialization
            InitializeComponent();

            // Phone- {2} -specific initialization
            InitializePhoneApplication();
        }

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
           if (System.Diagnostics.Debugger.IsAttached)
            {
                // An unhandled exception has occurred; break into the debugger
                System.Diagnostics.Debugger.Break();
            }
        } 

2 个答案:

答案 0 :(得分:1)

通过调用Application_UnhandledException这个事实很可能你不会在某个地方处理异常。

通过查看正在加载的页面的页面构造函数以及OnNavigatedTo事件处理程序(如果有的话)来调试它。

在应用级别,查看您在Application_Activated中所做的工作。

答案 1 :(得分:0)

将您的代码放入Try-Catch Block。我也遇到了这样的问题,但后来由异常处理方法处理。

try
 {

   // your code

 }

catch (Exception ex)
 {

   throw (ex);
 }