[C# 문법] C# 처리하지 못한 예외 처리하는 방법

안녕하세요.

 

오늘은 C# 문법에서 예외 처리를 다루어 보려고 합니다.

 

보통 C# 에서 예외처리를 할 때에는 try~catch 구문을 많이 이용해서 예외 처리를 하는데요.

 

제가 얼마전에 프로젝트를 하면서, 어떠한 예외도 발생하지 않는데 프로그램이 그냥 켜졌다가 바로 꺼지는 현상이 계속 발생해서 도대체 어디서 에러가 나는건지..찾고 찾다가 이 방법을 통해서 바로 알게 되었습니다.

 

바로, 프로그램 Main 진입점에서 에러가 발생하는 경우인데요.

 

간혹 프로그램이 Main 진입점에서 에러가 발생하게 되면 어떤 에러인지 사용자에게 보여주지도 않고 바로 프로그램이 꺼지는 현상이 발생합니다.

 

이런 경우 에러를 찾기 힘든데요. 바로 이런 경우를 대비해서 이런 에러들 까지 모두 찾을 수 있는 방법이 있어서 해당 방법을 소개해 드리고자 합니다.

 

 

바로, program.cs에서 ThreadException, UnhandledException 이 두개의 이벤트 핸들러를 선언해 주면 됩니다.

 

사용법은 아래와 같습니다.

 

예제 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace ExceptionTest
{
    static class Program
    {
        /// <summary>
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
 
            Application.ThreadException += Application_ThreadException;
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
 
            Application.Run(new Form1());
        }
 
        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            MessageBox.Show(e.ToString());
        }
 
        private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            MessageBox.Show(e.ToString());
        }
    }
}
 
cs

 

바로 위와 같이 ThreadException, UnhandledException 두개의 이벤트 핸들러를 선언해서 사용해주면, 처리 하지 못한 예외까지 잡아서 어디서 에러가 발생하는지 개발자가 찾을 수 있습니다.

 

감사합니다.^^

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY