Это будет плохая практика и приведет к ненужным межпакетным зависимостям. Пользовательский класс исключений всегда должен быть определен в том же пакете, что и классы, которые могут его выбросить. Вы должны попытаться свести к минимуму создание пользовательских исключений, которые используются во всем приложении, для этого используйте Exception . Пользовательское исключение, как следует из названия, является индивидуальным и должно быть сосредоточено на определенном разделе. Это должно быть то же самое для пользовательских классов утилит.
Пакет должен быть в состоянии представить одну функциональную единицу. См. this для примера. Пользовательское исключение, которое будет выброшено из него, является частью этой функциональной единицы и должно быть в том же пакете .
например:
// 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{}