我自己的异常处理程序仍会引发异常并使应用程序崩溃

若昂·维特尔

Winforms应用程序。这是主要的:

  static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        // Add handler for UI thread exceptions
        Application.ThreadException += new ThreadExceptionEventHandler(UIThreadException);

        // Force all WinForms errors to go through handler
        Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

        // This handler is for catching non-UI thread exceptions
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

        Application.Run(new Form1());
    }

    private static void CurrentDomain_UnhandledException(Object sender, UnhandledExceptionEventArgs e)
    {
            Exception ex = (Exception)e.ExceptionObject;
            MessageBox.Show("Unhadled domain exception:\n\n" + ex.Message);

            Application.Exit();


        // It should terminate our main thread so Application.Exit() is unnecessary here
    }

    private static void UIThreadException(object sender, ThreadExceptionEventArgs t)
    {
         MessageBox.Show("Unhandled exception catched.\n Application is going to close now.");


        // Here we can decide if we want to end our application or do something else
        Application.Exit();
    }
}

这是我故意产生异常的地方

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            int zero = 0;
            //int number = 1 / zero;

            throw new System.IO.FileNotFoundException();
        }
    }

堆栈跟踪:

    System.IO.FileNotFoundException was unhandled
  HResult=-2147024894
  Message=Unable to find the specified file.
  Source=NewPostSharpSolution
  StackTrace:
       at NewPostSharpSolution.Form1..ctor() in C:\Users\Joao\Documents\Visual Studio 2015\Projects\NewPostSharpSolution\NewPostSharpSolution\Form1.cs:line 21
       at NewPostSharpSolution.Program.Main() in C:\Users\Joao\Documents\Visual Studio 2015\Projects\NewPostSharpSolution\NewPostSharpSolution\Program.cs:line 30
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

处理程序显示异常的消息框,但仍会中断应用程序...

我有什么想念的吗?我以为实现此处理程序将让我决定如何处理异常?

谢尔盖·别列佐夫斯基(Sergey Berezovskiy)

从MSDN AppDomain.UnhandledException事件

此事件提供未捕获的异常的通知。它允许应用程序在系统默认处理程序向用户报告异常并终止应用程序之前记录有关异常的信息。

这意味着-您无法处理异常。您可以记录有关异常的信息,显示一些消息等。但是您不能阻止应用程序终止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我应该将自己的错误/异常处理构建到 Webflux 应用程序中?

来自分类Dev

我的应用程序在执行时引发异常

来自分类Dev

我的应用程序不断崩溃(致命异常)

来自分类Dev

WSGI应用程序引发了异常

来自分类Dev

ArrayOutOfBound 异常出现并使应用程序崩溃

来自分类Dev

在Java应用程序中处理异常

来自分类Dev

iOS应用程序异常处理

来自分类Dev

应用程序崩溃而未在Windows Phone 8.1 XAML中引发任何异常

来自分类Dev

应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

来自分类Dev

应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

来自分类Dev

终止引发异常的处理程序

来自分类Dev

如何从处理程序引发异常

来自分类Dev

终止引发异常的处理程序

来自分类Dev

如何从处理程序引发异常

来自分类Dev

异常后地图崩溃导致应用程序崩溃

来自分类Dev

MFC应用程序异常处理异常行为

来自分类Dev

未处理的异常处理程序后,Winforms应用仍然崩溃

来自分类Dev

如何全局处理MonoDroid未捕获的异常并防止应用程序崩溃

来自分类Dev

如果应用程序由于其他未处理的异常而崩溃,SQLDatabases 是否会关闭?

来自分类Dev

我如何知道我的应用程序崩溃时发生了哪个异常?

来自分类Dev

RegionInfo在Windows 8.1应用程序中引发异常

来自分类Dev

C#Winforms应用程序挂起,而不是引发异常

来自分类Dev

引发异常后,应用程序不退出

来自分类Dev

TimeZoneInfo.FindSystemTimeZoneById()在Unity应用程序中引发异常

来自分类Dev

C#Winforms应用程序挂起,而不是引发异常

来自分类Dev

引发应用程序异常会导致TransactionalException

来自分类Dev

使程序在异常处理程序(java)中崩溃

来自分类Dev

Java:引发异常后程序不会崩溃

来自分类Dev

Windows Phone 8.1应用程序崩溃。我如何看到异常?

Related 相关文章

  1. 1

    为什么我应该将自己的错误/异常处理构建到 Webflux 应用程序中?

  2. 2

    我的应用程序在执行时引发异常

  3. 3

    我的应用程序不断崩溃(致命异常)

  4. 4

    WSGI应用程序引发了异常

  5. 5

    ArrayOutOfBound 异常出现并使应用程序崩溃

  6. 6

    在Java应用程序中处理异常

  7. 7

    iOS应用程序异常处理

  8. 8

    应用程序崩溃而未在Windows Phone 8.1 XAML中引发任何异常

  9. 9

    应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

  10. 10

    应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

  11. 11

    终止引发异常的处理程序

  12. 12

    如何从处理程序引发异常

  13. 13

    终止引发异常的处理程序

  14. 14

    如何从处理程序引发异常

  15. 15

    异常后地图崩溃导致应用程序崩溃

  16. 16

    MFC应用程序异常处理异常行为

  17. 17

    未处理的异常处理程序后,Winforms应用仍然崩溃

  18. 18

    如何全局处理MonoDroid未捕获的异常并防止应用程序崩溃

  19. 19

    如果应用程序由于其他未处理的异常而崩溃,SQLDatabases 是否会关闭?

  20. 20

    我如何知道我的应用程序崩溃时发生了哪个异常?

  21. 21

    RegionInfo在Windows 8.1应用程序中引发异常

  22. 22

    C#Winforms应用程序挂起,而不是引发异常

  23. 23

    引发异常后,应用程序不退出

  24. 24

    TimeZoneInfo.FindSystemTimeZoneById()在Unity应用程序中引发异常

  25. 25

    C#Winforms应用程序挂起,而不是引发异常

  26. 26

    引发应用程序异常会导致TransactionalException

  27. 27

    使程序在异常处理程序(java)中崩溃

  28. 28

    Java:引发异常后程序不会崩溃

  29. 29

    Windows Phone 8.1应用程序崩溃。我如何看到异常?

热门标签

归档