c# - 这里继承的可能意图是什么

标签 c# .net

我正在处理现有代码库(Asp.net web api)。在那里我遇到了following class,这让我想到这在什么情况下会有用?到目前为止我已经看到了代码库,它还没有在任何地方使用过。因为它继承了 Exception 类,所以我认为可以使用通用的 Exception 类来代替创建这个新类。有人可以阐明这一点吗?即我们什么时候需要这样的定制类(class)以及它有什么帮助?

** 定义这个的开发者已经走了。

public class HttpResponseException : Exception
{
    private string _message;

    public HttpResponseException() : base() { }
    public HttpResponseException(string message) : base(message)
    {
        this._message = message;
    }

    public override string Message
    {
        get
        {
            return this._message;
        }
    }
}

最佳答案

Take a look at exception handling for web apis.您帖子中的类(class)似乎提供与 HttpResponseException 类似的功能.

拥有更具体的异常是很有帮助的,这样您就可以对它们做出独特的 react ,而不是抛出一般的异常,因为这样您就不知道在捕获它时出了什么问题的具体细节(您只知道出了什么问题并且必须猜测这些场景可能是什么)。

看看The best practices for exceptionshow to use specific exceptions in a catch block.我认为这句话描述了这个类背后的思想

In general, it's good programming practice to catch a specific type of exception rather than use a basic catch statement.

开发者为什么要实现这个已经存在于下面的HttpResponseException中的HTTPException类?

我可以想到以下场景。

  • 根据我之前提供的文档,开发人员可能不知道存在 HttpResponseException。
  • 也许这个项目是在足够旧的 .net 版本中,当时不存在 http 异常。
  • 最可能的场景 IMOP - 开发人员希望提供一些 HTTP 异常独有的功能,这是他们实现它的占位符,尽管他们从未抽出时间完成该实现。

与 Web API 中可用的功能相比,此类的当前实现不提供任何独特的功能,您很可能将其删除并使用内置的异常。

关于c# - 这里继承的可能意图是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50804639/

相关文章:

c# - 使用哈希码进行对象比较-概念困境

c# - 如何仅使用动态将 JSON 反序列化为简单的 Dictionary<string,object> 到 datagridview?

c# - SoapExtension System.Configuration.ConfigurationErrorsException in web.config 无法解析属性 'type'的值

.net - NavigationService 什么时候初始化?

c# - 如何在C#中使用类名作为参数

c# - 具有 BackgroundColor 和图像的 WPF 椭圆

c# - 通过 JSON 文件配置 ServiceCollection

.net - 当参数没有这些约束时,如何调用具有类型约束的泛型方法?

c# - C#Dapper和MySQL随机错误,即 fatal error /从流读取失败等

c# - 为什么在 C# 中有 HashSet 而没有 Set?