Exception 처리를 하지 않은 부분에서 예외가 발생하여
프로그램이 죽어버리는 경우가 종종 발생한다.
최대한 예외처리를 해서 그런일이 발생하지 않게 하는 것이 가장 좋은 방법이지만...
사람인지라....
그래서 찾아보니 Unhandled Exception 을 잡아낼 수 있는 방법을 닷넷에서 제공하고 있었다.
Winform / WPF 는 좀 다르긴 하지만 처음에 Application 을 통해서 시작하는데.
Winform 은 아래의 event delegate 를 사용하여 가능하며
System.Windows.Forms.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
System.AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledException);
......
private void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
// 예외 처리
}
private void Application_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
// 예외 처리
}
WPF 는 생성한 Application 객체의 Dispatcher.UnhandledException event delegate 를 사용한다.
System.Windows.Application app = new System.Windows.Application();
app.Dispatcher.UnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(Dispatcher_UnhandledException);
.......
static void Dispatcher_UnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
// 예외처리
}
해당 예외가 발생하는 부분에서 하는 작업이 아닌지라 정확한 예외처리는 힘들수도 있지만
최소한의 처리나 프로그램이 죽는 것은 막을 수 있을 거 같다.
'Dev::DotNet > C#' 카테고리의 다른 글
System.Environment.CurrentDirectory 의 경로 (0) | 2012.08.04 |
---|---|
Assembly 의 Version 을 날짜로 바꾸기 (1) | 2012.08.03 |
네트워크 폴더 접속 (0) | 2012.08.02 |
실수를 정수로 형변환 할때 (0) | 2012.07.31 |
다중 실행 방지를 위한 Mutex (0) | 2012.07.23 |