如何在Windows Phone 7应用程序中捕获未处理的异常?

时间:2011-12-11 08:49:13

标签: c# windows-phone-7 exception mobile

如何捕获未处理的异常?如果我的所有代码都包含在try catch中? 但是一个异常发生了,应用程序崩溃了...也许有一些一般的建议?

使用:

        try
            {
             ...my code
            }
        catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(),"Error!",MessageBoxButton.OK);
            }

示例代码不存在,因为有一个很大的代码并完成了许多事情...而且它看起来像某个地方发生了错误,但它在哪里是try-catch没有显示,而应用程序只是关闭...

添加:

var errorw = MessageBox.Show(e.ExceptionObject.ToString(), "error", MessageBoxButton.OK); e.Handled = true; 

并且消息:参数不正确。

正如我们现在明白给出的参数在哪里和哪个参数不正确?顺便说一句,当你返回到应用程序的上一页时,忘记写下当你按Back时发生错误。

6 个答案:

答案 0 :(得分:3)

你能尝试这样吗

      // Code to execute on Unhandled Exceptions
private void Application_UnhandledException(object sender,ApplicationUnhandledExceptionEventArgs e)
{
    if (e.ExceptionObject is QuitException)
        return;

    if (System.Diagnostics.Debugger.IsAttached)
    {
        // An unhandled exception has occurred; break into the debugger
        System.Diagnostics.Debugger.Break();
    }

    //MessageBox.Show(e.ExceptionObject.ToString(), "Unexpected error", MessageBoxButton.OK);

    var errorWin = new ErrorWindow(e.ExceptionObject, "An unexpected error has occurred. Please click Send to report the error details.")
                       {Title = "Unexpected Error"};
    errorWin.Show();
    //((PhoneApplicationFrame) RootVisual).Source = new Uri("/Views/ErrorWindow.xaml", UriKind.Relative);

    e.Handled = true;
}

private class QuitException : Exception { }

public static void Quit()
{
    throw new QuitException();
}

答案 1 :(得分:1)

总有手册。

UnhandledException event说明。

答案 2 :(得分:1)

您是否尝试了StackTrace的{​​{1}}属性。它显示了抛出异常的位置。

Exception

答案 3 :(得分:1)

确保在调试中构建应用程序,而不是在发布模式下构建应用程序。然后,转到VS Debug-Exceptions菜单并检查所有'Thrown'列是否已启用。之后,使用附加的调试器启动应用程序。 此外,您可以逐步执行代码。

答案 4 :(得分:0)

嘿伙计们,您可以使用BugSense库来捕获数据然后收集它们! PS。我是创始人之一

答案 5 :(得分:-2)

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

try
 {

   // your code

 }

catch (Exception ex)
 {

   throw (ex);
 }