WCF捕获异常后要返回哪些消息?

时间:2013-09-05 07:02:33

标签: wpf wcf

我正在使用wcf服务,我知道如何捕获我需要的所有异常... 但我不知道应该返回哪些消息?

我的代码:

try
{
    currentPosition = await locator.GetGeopositionAsync();
}
catch (FaultException<MessageError> ex)
{
    MessageBox.Show(...?);
}
catch (EndpointNotFoundException ex)
{
    MessageBox.Show(...?);
}
catch (CommunicationException ex)
{
    ...
}
catch (Exception ex)
{
    ...
}

我可以返回ex.Message,但我不希望客户知道所有细节,我想展示一条简短而有用的信息。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

我总是以与@Tim在评论中提出的方式类似的方式处理这种情况。我需要保存尽可能多的信息,以便我可以在以后调试问题,但正如您所说,我们不希望向最终用户显示开发人员Exception消息。

因此,我使用的解决方案只是将来自Exception的信息存储在数据库中,并为用户提供“用户友好”的错误消息。确保您还添加代码以记录任何inner Exception以及它们是否存在。现在要解决关于在这些消息中放入什么的问题......这实际上取决于你的情况,但我通常会遵循这个程序。

首先,我研究出来(无论是从前瞻思维还是从测试结果中发现的)最有可能发生的错误......我的头脑中,我正在谈论像“没有网络访问”这样的错误,或者“用户安全无效”等。

当我遇到许多可能的错误时,我会尝试使用许多catch语句来捕获确切的错误。在处理程序内部,我检查某些Exception消息,并为每个消息返回预先写好的用户友好消息。最后,我添加了最后一条通用消息,以显示所有无法预料的错误情况。