未捕获Silverlight 3 XamlReader异常
当我将XamlReader.Load()与无效的XAML字符串一起使用时,不会捕获生成的XAMLParseException,尽管它位于try-catch块中:未捕获Silverlight 3 XamlReader异常,silverlight,exception,silverlight-3.0,xamlreader,Silverlight,Exception,Silverlight 3.0,Xamlreader,当我将XamlReader.Load()与无效的XAML字符串一起使用时,不会捕获生成的XAMLParseException,尽管它位于try-catch块中: try { UIElement xamlCode = XamlReader.Load(XamlText) as UIElement; } catch (Exception ex) { ErrorText = ex.Message; } 代码是从Dispatchermer的Tick事件调用的,
try
{
UIElement xamlCode = XamlReader.Load(XamlText) as UIElement;
}
catch (Exception ex)
{
ErrorText = ex.Message;
}
代码是从Dispatchermer的Tick事件调用的,但在MouseLeftButtonDown之类的事件中也会调用。不会捕获异常,从而导致调用.Load()的行中断
有人知道如何捕获此异常并恢复正常的程序活动吗
谢谢,Andrej这段代码无法捕获异常,这是完全无法理解的。如何确定这里发生了XAMLParseException?您确定不是来自项目中的其他Xaml加载吗?总是这样吗?还是只在调试时使用 我知道这是一个非常晚的答案,您可能已经找到了解决方案,因为对于那些发现您的问题与他们的问题相似的人(如我的案例),我的答案可能仍然有用 如果它发生在debuggin时,可能是因为exeption被配置为抛出 您可以更改此设置:
有各种Silverlight操作被“重新编组”到单独的线程上,原因可能有各种各样的原因。看起来有点像这样:
Dispatcher.BeginInvoke(() => LoadSomeXamlOrSomething());
LoadSomeXamlOrSomething()中引发的任何异常都不会被正常的try/catch块捕获。这种情况甚至在SL4中也会发生,比如加载格式无效的图像。这很烦人,微软需要想出一个更好的方法来处理这个问题,例如,让你在打电话时注册一个异常处理程序
在MS解决这个问题之前,您的选择是:
- 修复基本的XAML错误
- 捕获App.Application\u UnhandledException中的异常