我正在使用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,但我不希望客户知道所有细节,我想展示一条简短而有用的信息。
我该怎么办?
答案 0 :(得分:1)
我总是以与@Tim在评论中提出的方式类似的方式处理这种情况。我需要保存尽可能多的信息,以便我可以在以后调试问题,但正如您所说,我们不希望向最终用户显示开发人员Exception
消息。
因此,我使用的解决方案只是将来自Exception
的信息存储在数据库中,并为用户提供“用户友好”的错误消息。确保您还添加代码以记录任何inner Exception
以及它们是否存在。现在要解决关于在这些消息中放入什么的问题......这实际上取决于你的情况,但我通常会遵循这个程序。
首先,我研究出来(无论是从前瞻思维还是从测试结果中发现的)最有可能发生的错误......我的头脑中,我正在谈论像“没有网络访问”这样的错误,或者“用户安全无效”等。
当我遇到许多可能的错误时,我会尝试使用许多catch
语句来捕获确切的错误。在处理程序内部,我检查某些Exception
消息,并为每个消息返回预先写好的用户友好消息。最后,我添加了最后一条通用消息,以显示所有无法预料的错误情况。