【问题标题】:how to catch an unhandled exception in windows phone 7 application?如何在 Windows Phone 7 应用程序中捕获未处理的异常?
【发布时间】:2011-12-11 08:49:13
【问题描述】:

如何捕捉未处理的异常?如果我所有的代码都包裹在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; 

还有消息:参数不正确。

正如我们现在理解的那样,在哪里以及给出的参数是不正确的?对了忘记写了,当你按下返回,当你返回到应用程序的上一页时,就会发生错误。

【问题讨论】:

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


    【解决方案1】:

    你会这样尝试吗

          // 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();
    }
    

    【讨论】:

    • 什么是ErrorWindow?修改 MessageBox?
    • 放置ErrorWindow, MessageBox: var errorw = MessageBox.Show(e.ExceptionObject.ToString(), "error", MessageBoxButton.OK); e.Handled = true;并提示:参数不正确。
    • 正如我们现在理解的那样,在哪里以及给出的参数是不正确的?对了忘了写,当你按下返回,当你返回到应用程序的上一页时,会发生错误。
    • 别忘了:this.UnhandledException += this.Application_UnhandledException;这是应用程序 obj。
    • 当你知道这篇文章的代码取自这个相当不错的博客时,这篇文章就更有意义了。整个错误处理比指示的要复杂得多。请参阅link,了解如何使用它。
    【解决方案2】:

    总有一本手册。

    UnhandledException event 描述。

    【讨论】:

    • 请在您的答案中发布相关代码,而不仅仅是链接到文档。
    【解决方案3】:

    您是否尝试过ExceptionStackTrace 属性。它会向您显示引发异常的位置。

    catch (Exception ex)
    {
        MessageBox.Show(ex.StackTrace,"Error!",MessageBoxButton.OK);
    }
    

    【讨论】:

    • 其实没有显示的事情。应用程序立即关闭。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        try
         {
        
           // your code
        
         }
        
        catch (Exception ex)
         {
        
           throw (ex);
         }
        

        【讨论】:

        • 我认为用户正试图在您的解决方案之外捕获异常。 IE 所有不属于已处理异常的异常。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多