0

因此,假设我使用可能导致致命异常(例如网络故障)的方法构建了一个类。最佳做法是:

1) 抛出一个异常,让调用程序捕获并处理它?2) 引发调用过程为其添加处理程序的类事件?3) 抑制异常并从方法中返回 False 或 Nothing 而不是预期的结果?

如果这是一个令人恼火的微不足道的问题,我深表歉意。我是 .NET 新手

4

3 回答 3

0

我宁愿选择选项 1。

在异常中提供尽可能多的信息,让调用者处理异常。除此之外,您还应该尝试重新抛出异常(或首先不捕获它),以便调用者可能收到原始消息和堆栈跟踪。

你几乎不应该在调用者不知道的情况下吞下异常。

来自异常和异常处理(C# 编程指南)

不要捕获异常,除非您可以处理它并使应用程序处于已知状态。如果您捕获 System.Exception,请使用 catch 块末尾的 throw 关键字重新抛出它。

于 2012-10-25T03:52:10.090 回答
0

从某种意义上说,所有这些都是流行的方法,尽管什么都不返回,也称为静默失败,是相当危险的。

我会通过实际编写客户端代码来考虑我希望如何使用该库。这将很好地表明异常或处理程序是否更好。

于 2012-10-25T03:59:28.687 回答
0

当我构建 WCF 服务以在代码中出现异常时返回客户端错误时,我想到了这一点。

我研究了我的代码并将可能发生的错误定义为错误代码和错误消息,当客户端发生异常或错误时,我的方法将返回一个 Int errorCode。

客户端将在我的服务中使用另一种方法来了解错误是什么。

示例代码:

public string GetError(int error)
        {
            switch (error)
            {
                case 1:
                    _errorString = Constants.ERR_INVALID_INFORMATION;
                    break;
                case 2:
                    _errorString = Constants.ERR_DELETE_FAILED;
                    break;
                case 3:
                    _errorString = Constants.ERR_ADD_FAILED;
                    break;
                case 4:
                    _errorString = Constants.ERR_UPDATE_FAILED;
                    break;       
            }
            return _errorString;
        }
于 2012-10-26T01:49:16.003 回答