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

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

任何精心制作的例子都会很好。

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

示例:

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; } 

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

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

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

用户定义的exception有几个原因:

  1. 您想传递错误代码等额外信息。 例如,如果您是数据库供应商,则可以添加其他方法以包含内部错误代码。
  2. 要添加更具体的Exception类型,您不需要依赖解析可能随时间变化的exception消息。 例如,Hibernate具有ConstraintViolationException 。 您立即知道您对数据库存在某种约束问题(可能是外键约束)。
  3. 您可以使用不同的catch块以不同方式处理不同的exception。

话虽如此,一般来说,您应该更喜欢使用内置的Exceptions,或者至少让您的自定义Exceptions扩展内置插件,这样用户就不必关心您的特殊类,除非他们愿意。

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