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

时间:2013-06-08 21:49:33

标签: java exception

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

修改

正如大多数人所说的那样“它在异常类是自解释的上下文中有帮助,即NullPonterExceptionInterruptedException。”除了这个用例,还有我们能想到的任何其他东西。

2 个答案:

答案 0 :(得分:7)

有些例外是不言自明的,它们的堆栈跟踪是理解它们所必需的。 NullPointerException就是一个例子。

答案 1 :(得分:-1)

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

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

一个特殊情况是java.util.Date类,其创建时间定义了对象的值。我敢肯定,对于没有争论的建构者,还有更多的应用示例,但与异常相结合的那个可能是最差的。