none
win8 metro app 中如何全局处理未catch的异常 RRS feed

  • 问题


  • 在程序中有些异常,并未catch处理(包括多线程的),导致win8 metro app直接推出,我如何处理这种情况,不让app crash呢?

    2013年7月28日 15:26

全部回复

  • 使用

    catch (Exception) { }

    2013年7月29日 2:34
  • 我的意思是想在app.cs中处理unhandled exception,但是有些异常,可能是多线程的,并未在该事件中捕获到,导致程序终止。所以对于这类异常我怎么才能catch到
    2013年7月29日 15:04
  • 具体的代码段贴上来看看。
    2013年7月30日 7:26
  • 建议采用 Debug.WriteLine 函数,协助调试。

    2013年7月31日 3:39
  • Hi All

    多谢分享方法,其实在VS2010以上版本中都有附带一个叫IntelliTrace的工具,可以使用它来调试线程中的异常。

    具体使用方法请参考 http://msdn.microsoft.com/zh-cn/library/vstudio/dd264954.aspx

    以上,祝好运。


    James He
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年7月31日 6:21
    版主
  • 非常感谢以上几位的回答!调试我会调啊。可能我说的不好,所以还是没让你们明白。我的意思是在app.cs里边去catch 那些程序中意外抛出的异常,并处理比如弹出一个异常信息对话框。这样子应用程序就不会因为未处理的直接退出了。
    2013年8月8日 1:56
  • public App()
            {
                this.InitializeComponent();
                this.Suspending += OnSuspending;
                this.UnhandledException += App_UnhandledException;
               
            }

    void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
            {
                e.Handled = true;
                ExceptionHandler.HandleException(new Exception(e.Message, e.Exception));
            }

    如果有一个async void 方法抛出异常,并不进入到App_UnhandledException里边,而是process直接crash 了

    public async void Test()
    {
        throw new Exception("boo");
    }


    2013年8月9日 10:25
  • public App()
            {
                this.InitializeComponent();
                this.Suspending += OnSuspending;
                this.UnhandledException += App_UnhandledException;
               
            }

    void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
            {
                e.Handled = true;
                ExceptionHandler.HandleException(new Exception(e.Message, e.Exception));
            }

    如果有一个async void 方法抛出异常,并不进入到App_UnhandledException里边,而是process直接crash 了

    public async void Test()
    {
        throw new Exception("boo");
    }

    2013年8月9日 10:25