我目前正在学习一本关于如何在运行时将 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 代码转换为对象,否则应显示相应的错误。
关于程序如何 react ,我可以说调试停止了(它返回到 Visual Studio 指出错误)并且它的行为不像进入无限循环。
最佳答案
这可能是调试器在异常发生时中断。在 catch 内设置一个断点,然后按 F5 继续,它应该继续执行并命中断点。
通过“破坏”,我并不是说它失败了,我的意思是它会在异常的有问题的行上暂停应用程序的执行,所以在这种情况下这是一件好事。
如果您使用的是 Visual Studio,则可以启用/禁用此“异常中断”行为:
- 调试 -> 异常...(Ctrl + Alt + E)
- 公共(public)语言运行时异常(exception),根据需要选中右侧的复选框。
至于异常本身,除非它专门用于显示异常,否则加载提供的 XAML 字符串时可能会遇到问题。
关于c# - Try-Catch 未知行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121943/