这将是一个糟糕的做法,并且会导致不必要的跨包依赖。自定义异常类应始终在能够抛出它的类所在的同一包中定义。您应该尽量减少创建在整个应用程序中都使用的自定义异常,而应该使用 Exception。正如其名称所示,自定义异常是定制的,应该专注于特定部分。自定义实用程序类也应该遵循相同的规则。
包应该能够呈现单个功能单元。可以参考此链接进行了解。一个自定义异常,将从其中抛出,是该功能单元的一部分,因此应位于同一包中。
例如:
// Below should be in a single package
interface Draggable{}
abstract class Graphic{}
class Circle extends Graphic implements Draggable{}
class Box extends Graphic implements Draggable{}
final class GraphicValidator {// utility class}
// don't put below in a separate 'exceptions' package,
// who's gonna use it anyway other than the components in this package ?
class GraphicRenderingException extends Exception{}