当我将XamlReader.Load()与无效的XAML字符串一起使用时,虽然位于try-catch- XAMLParseException块中,但结果捕获不到:
try
{
UIElement xamlCode = XamlReader.Load(XamlText) as UIElement;
}
catch (Exception ex)
{
ErrorText = ex.Message;
}代码是从DispatcherTimer的Tick-Event中调用的,但在像MouseLeftButtonDown这样的事件中,异常不会被捕获,从而导致我调用.Load()的代码行中断。
有人知道如何捕获此异常并恢复正常的程序活动吗?
谢谢,安德烈
发布于 2009-11-23 00:16:41
这段代码不能捕获异常,这是完全难以理解的。您如何确定此处发生了XAMLParseException?您确定不是来自项目中的其他Xaml加载吗?
发布于 2010-05-07 22:13:42
一直都是这样吗?还是只在调试时使用?
我知道这是一个非常晚的答案,你可能已经找到了解决方案,因为作为参考,人们发现你的问题与他们的相似(比如我的案例),我的答案可能仍然有用。
如果它在调试时发生,可能是因为exeption被配置为抛出。
您可以对此进行更改:
发布于 2010-10-16 02:20:29
有各种Silverlight操作被“重新编组”到单独的线程上,这大概是出于各种充分和充分的原因。它看起来有点像这样:
Dispatcher.BeginInvoke(() => LoadSomeXamlOrSomething());在LoadSomeXamlOrSomething()中抛出的任何异常都不会被普通的try/catch块捕获到。即使在SL4中,这种情况也会发生,比如加载格式无效的图像。这很烦人,MS需要想出一个更好的方法来处理这个问题,例如,让你在进行调用时注册一个异常处理程序。
在微软解决这个问题之前,你的选择是:
在App.Application_UnhandledException.中,
https://stackoverflow.com/questions/1701138
复制相似问题