0

我正在使用 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 但我不希望客户知道所有细节,我想显示一条简短而有用的消息。

我应该怎么办?

4

1 回答 1

1

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

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

首先,我计算出最有可能发生的错误(无论是从前瞻性思维还是从测试结果)......在我脑海中,我正在谈论诸如“无网络访问”或“无效用户”之类的错误安全”等

当我有许多可能的错误时,我会尝试用一些catch语句来捕捉确切的错误,就像你有的那样。在处理程序中,我检查某些Exception消息并为每个消息返回预先编写的用户友好消息。最后,我添加最后一条通用消息以显示所有不可预见的错误情况。

于 2013-09-05T10:00:13.077 回答