【问题标题】:Try-Catch unknown behaviourTry-Catch 未知行为
【发布时间】:2011-08-19 12:59:28
【问题描述】:

我目前正在学习一本关于如何在运行时将 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 代码转换为对象,否则应显示相应的错误。

关于程序如何反应,我可以说调试停止(它让我返回到 Visual Studio 并指出错误)并且它的行为不像进入无限循环。

【问题讨论】:

  • 作为默认调试器中断此类异常,尝试不在调试器中运行程序,而是显式启动可执行文件

标签: c# .net xaml user-controls try-catch


【解决方案1】:

可能是调试器在异常发生时中断。在 catch 中插入一个断点并按 F5 继续,它应该继续运行并命中你的断点。

“中断”并不是说它失败了,我的意思是它会在异常的违规行暂停应用程序的执行,所以在这种情况下这是一件好事。

如果您使用的是 Visual Studio,则可以启用/禁用此“异常中断”行为:

  • 调试 -> 异常... (Ctrl + Alt + E)
  • 通用语言运行时异常,请根据需要选中右侧的框。

至于异常本身,除非它专门用于显示异常,否则可能无法加载提供的 XAML 字符串。

【讨论】:

  • 是的,即使每次代码到达 try-catch 时我没有按 F5 设置断点(并且异常也被捕获),它也会传递异常。我怎样才能阻止 Visual Studio 继续用这个异常来打扰我?
  • @AlexB 您需要取消选中我在回答中提到的选项。
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 2014-08-03
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2012-08-17
  • 1970-01-01
相关资源
最近更新 更多