【发布时间】:2010-09-10 19:28:39
【问题描述】:
我有一个使用 WCF 服务的 Silverlight 2 应用程序。因此,它对服务方法的所有调用使用异步回调。如果在这些调用之一之前或期间服务未运行,或者它崩溃,或者网络出现故障等,则会如您预期的那样生成异常。问题是,我不知道如何捕捉这个异常。
-
因为它是一个异步调用,所以我不能用 try/catch 块包装我的 begin 调用,并让它拾取在程序从该点继续运行后发生的异常。
因为服务代理是自动生成的,所以我不能在每个生成的调用 EndInvoke 的函数上放置一个 try/catch 块(异常实际出现的地方)。这些生成的函数也被调用堆栈中的外部代码包围,因此堆栈中也没有其他地方可以放置 try/catch。
我无法将 try/catch 放入回调函数中,因为异常在它们被调用之前就发生了。
我的 App.xaml.cs 中有一个 Application_UnhandledException 函数,它捕获所有未处理的异常。我可以使用它,但这似乎是一种混乱的方式。我宁愿将此函数保留给真正意外的错误(也称为错误),而不是在我想以特定方式处理的每种情况下都使用此函数中的代码。
我是否缺少明显的解决方案?还是我使用 Application_UnhandledException 卡住了?
[编辑]
如下所述,Error 属性正是我想要的。让我陷入循环的是,异常被抛出并且似乎未被捕获,但执行能够继续。它触发 Application_UnhandledException 事件并导致 VS2008 中断执行,但在调试器中继续执行允许继续执行。这不是真正的问题,只是看起来很奇怪。
【问题讨论】:
标签: wcf silverlight exception