WPF - XamlParseException 대응 방법
WPF 프로그램을 하다보면 종종 XamlParseException이 발생하는 경우가 있습니다. 예를 들어, 아래와 같이 XAML 페이지에서 "생성자"에서 오류가 포함되어 있는 경우,
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
throw new ApplicationException();
}
}
VS.NET 디버거는 아래와 같이 정상적으로 소스 코드를 가리키지 못할 뿐더러 이를 XamlParseException 예외로 출력해 버리는 것으로 끝납니다.
[그림 1: 생성자에서 오류가 있는 경우 - XamlParseException]
심지어, 아래와 같이 "DependencyProperty"의 OnPropertyChanged 유의 정적 함수 내에서 오류가 있는 코드가 실행되는 경우라면,
public partial class UserControl1 : UserControl
{
public static readonly DependencyProperty IsTestProperty =
DependencyProperty.Register("IsTest", typeof(bool), typeof(UserControl1),
new FrameworkPropertyMetadata(false, OnPropertyChanged));
public bool IsTest
{
set
{
SetValue(IsTestProperty, value);
}
get
{
return (bool)GetValue(IsTestProperty);
}
}
private static void OnPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
throw new ApplicationException();
}
public UserControl1()
{
InitializeComponent();
}
}
VS.NET 디버거는 아래와 같이 xaml 페이지를 가리키고 역시 XamlParseException 예외를 잡아냅니다.
[그림 2: 의존 속성의 정적 메서드에서 오류가 있는 경우 - XamlParseException]
이렇게 XamlParseException 예외가 발생한 경우,,, 어디서부터 디버깅을 해야 할지 모르는 분들이 계신데요. 이런 분들은 아래의 글을 다시 한번 읽어보시면 ^^ 예외가 발생한 코드를 100% 잡아내실 수 있습니다.
First-Chance Exception
; https://www.sysnet.pe.kr/2/0/510
[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]