我目前正在学习一本关于如何在运行时将xaml代码转换为对象的书。
我有以下代码:
try
{
ctrl = XamlReader.Load(xaml) as UserControl;
}
catch (Exception exc)
{
OnXamlResult(new XamlCruncherEventArgs(exc.Message)); return;
}
代码不是我的,我从书中拿出来。
问题是try-catch无法正常工作,或者至少就像我现在所知道的那样。 在调试期间,程序到达该行时停止:
ctrl = XamlReader.Load(xaml) as UserControl;
没有捕获异常。
我做错了什么或如何解决这个问题?
“xaml”是一个字符串。它取自文本框,如果用户正确键入xaml,程序应将xaml代码转换为对象,否则应显示相应的错误。
关于程序如何反应,我可以说调试停止(它让我返回到可视工作室指向错误)并且它不会表现得像进入无限循环。
答案 0 :(得分:3)
可能是调试器因异常发生而中断。将一个断点放在捕获区内并且F5继续,它应该继续并且击中你的断点。
通过“破解”,我并不是说它失败了,我的意思是它会暂停在异常的违规行上执行应用程序,所以在这种情况下它是一件好事。
如果您使用的是Visual Studio,则可以启用/禁用此“中断异常”行为:
对于异常本身,除非专门用于显示异常,否则很可能无法加载提供的XAML字符串。