본문으로 바로가기

처리되지 않은 예외(Exception) 핸들링

category 개발언어/c++ 2016. 7. 18. 06:19

 

try ~ catch 처리하지 않는 곳에서 예외가 발생할 핸들링 있는 방법을 알아보자..

public Form1()
{
InitializeComponent();

//AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
// ThreadException
핸들러를 등록한다
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);

// UnhandledException
핸들러를 등록한다
Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledException);
}

// Windows
어플리케이션용 예외 핸들러
public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
ShowErrorMessage(e.Exception, "Application_ThreadException
의한 예외 통지입니다.");
}

//
콘솔·어플리케이션용 예외 핸들러
public static void Application_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = e.ExceptionObject as Exception;
if (ex != null)
{
ShowErrorMessage(ex, "
처리되지 않은 예외!!!!");
}
}

public static void ShowErrorMessage(Exception ex, string extraMessage)
{
MessageBox.Show(extraMessage + " \n――――――――\n\n" +
"
에러 내용\n" + ex.Message + "\n\n"
);
}

void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//Process.GetCurrentProcess().Close();
}
///Test
private void button1_Click(object sender, EventArgs e)
{
object aaa = null;
aaa.ToString();
}