为什么用户定义的异常类在java中是首选/重要的?

时间:2014-07-29 20:36:04

标签: java exception exception-handling

当我们在Java中有系统定义的异常类时,为什么需要创建用户定义的异常类?因为我的老师告诉我在我的项目中制作异常课程。

任何精心设计的例子都会很好。

3 个答案:

答案 0 :(得分:3)

用户定义的异常可以更具描述性。

示例:

public void setName (String name)
    throws NameException
{
    if (name == null || name == "")
        throw new MissingNameException ();
    if (name.length > 30)
        throw new InvalidNameException (name); // this exception can contain a message that explains why the
                                               // name is invalid and what a valid name looks like
    _name = name;
}

创建自己的异常的替代方法是使用预定义的异常,例如InvalidArgumentException,但是这会为捕获此异常的方法提供更少的信息(因为它可以被许多类中的许多方法抛出)

定义异常的类层次结构可以让您的类用户在处理异常时更好地控制。

答案 1 :(得分:2)

因为现有的例外可能不适合您的情况。通过创建自己的异常,您可以更容易理解抛出异常的原因,并且与使用现有异常相比,它会更好。

答案 2 :(得分:2)

有几个原因可以让用户定义例外:

  1. 您想传递错误代码等额外信息。例如,如果您是数据库供应商,则可以添加额外的方法来包含内部错误代码。
  2. 要添加更具体的异常类型,因此您不需要依赖解析可能随时间变化的异常消息。例如,Hibernate有ConstraintViolationException。您立即知道您对数据库存在某种约束问题(可能是外键约束)。
  3. 您可以使用不同的catch块以不同的方式处理不同的异常。
  4. 话虽如此,一般来说,您应该更喜欢使用内置的Exceptions,或者至少让您的自定义Exceptions扩展内置插件,这样用户就不必关心您的特殊类,除非他们想要。 / p>

    有关您为什么更喜欢内置异常的详细信息,请参阅Effective Java Item 60:赞成使用标准异常