我如何将异常标记为已处理,以防止它在我的Silverlight应用程序中起泡到Application_UnhandledException处理程序?
IObservable<someobject> obs;
obs.Subscribe( onnext => { }, ex =>
{
//error! how can I mark it as handled?
System.Windows.MessageBox.Show( ex.Message );
} );
更新:在我的应用程序中,它是一个RIA服务调用,所以也许MarkErrorAsHandled会解决这个问题。不幸的是,这个错误是在数据库端修复的,我没有设置重新创建它。
对于大多数异常,您应该可以在订阅时提供OnError处理程序。
然而,一些框架对异常处理应用了额外的要求。例如,RIA服务要求在完成回调中调用System.ServiceModel.DomainServices.Client.OperationBase.MarkErrorAsHandled()
。如果没有调用,RIA服务将在回调完成后抛出异常。
这让我感到惊讶,因为您应该已经做了正确的事情来确保异常得到处理。你确定没有另一个接收OnError的订阅者吗?