繁体   English   中英

Exception或其子类中的无参数构造函数

[英]No-argument constructor in Exception or its subclasses

有人可以帮助我至少在异常类的上下文中理解无参数构造函数的实际用例。

编辑:

正如大多数人所说的那样:“在异常类是自解释类的情况下(即NullPonterExceptionInterruptedException NullPonterException 。” 除了这个用例之外,我们还能想到其他任何事情。

有些异常是不言自明的,理解它们所需的全部堆栈跟踪。 NullPointerException是一个示例。

通常,如果要创建具有默认值的对象,则认为使用默认构造函数。 关于默认构造函数和异常,Paul Bellora已经提供了一个很好的答案,我完全同意,但不建议使用。 原因是,作为程序员,您有责任通知用户有关他做错了什么,以便他可以增强其输入或与系统的交互。 仅显示一个告诉用户'NullPointerException'的对话框就足够了。 如果实现自定义异常类,则永远不会提供非参数构造函数。

我看到了默认构造函数在创建复杂对象时的优势,这些对象的创建需要大量配置属性。 应用大量重载的构造函数或创建方法可能会造成很大的混乱,并且也很难维护。 使用依赖项注入更加方便,并且大大简化了对象的配置。 一个非常重要的默认构造函数是受保护的默认构造函数。 尤其是对于提供API而言,必须从外部使用新操作来防止创建对象。 应该限制​​用户使用工厂实例的创建方法来创建API的项。 这是指定正确使用API​​的方法。 当然,您不仅会为API使用受保护的无参数构造函数。 但是在大多数情况下,属性是注入的,因此,例如创建不需要参数!

一个特殊情况是java.util.Date类,其创建时间定义了对象的值。 我敢肯定,有更多的应用示例没有争论的构架,但是将其与Exceptions结合使用可能是最糟糕的一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM