当我使用带有无效XAML字符串的XamlReader.Load()时,虽然在try-catch-block中出现了,但是没有捕获到结果的XAMLParseException:
try
{
UIElement xamlCode = XamlReader.Load(XamlText) as UIElement;
}
catch (Exception ex)
{
ErrorText = ex.Message;
}
代码是从DispatcherTimer的Tick-Event调用的,但是在像MouseLeftButtonDown这样的事件中,没有捕获异常导致我调用的行中断.Load()。
有谁知道如何捕获此异常并恢复正常的程序活动?
谢谢,Andrej
答案 0 :(得分:0)
这段代码不会捕获异常是完全不可思议的。你如何确定XAMLParseException在这里发生?你确定不是来自项目中的其他一些Xaml Load吗?
答案 1 :(得分:0)
总是这样吗?还是仅在调试时?
我知道这是一个非常晚的答案,你可能已经找到了它的解决方案,作为参考人们发现你的问题类似于他们(就像我的情况),我的答案可能仍然有用。
如果它在debuggin时发生,可能是因为exeption被配置为抛出。
你可以改变这个:
答案 2 :(得分:0)
有各种各样的Silverlight操作可以被“重新编组”到不同的线程上,这可能是各种充分和充分的理由。它看起来像这样:
Dispatcher.BeginInvoke(() => LoadSomeXamlOrSomething());
LoadSomeXamlOrSomething()中抛出的任何异常都不会被正常的try / catch块捕获。即使在SL 4中也会发生这种情况,例如使用无效格式加载图像。这很麻烦,MS需要提出一种更好的方法来解决这个问题,例如,让你在打电话时注册一个异常处理程序。
在MS公布之前,你的选择是: