Вы должны создать новый класс, который расширяет Exception и предоставляет подробности, относящиеся к вашей ошибке.Например, вы можете создать класс с именем EmptyListException, который содержит подробную информацию о вашей ошибке.Этот может быть очень простым классом исключений, который не принимает аргументов конструктора, но, возможно, вызывает super("Cannot generate mean for an empty list");
для предоставления настраиваемого сообщения для трассировки стека.
Часто это не делаетсядостаточно ... один из моих самых ненавистных запахов кода - это когда разработчики используют общее исключение (даже иногда само исключение) и передают строковое сообщение в конструктор.Это допустимо, но значительно усложняет работу тех, кто реализует ваш код, поскольку им приходится ловить общее исключение, когда на самом деле может произойти только несколько вещей.Исключения должны иметь ту же иерархию, что и объекты, которые вы используете для данных на каждом уровне, предоставляя более конкретные детали.Чем более подробно описан класс исключений, тем более детальным и полезным является трассировка стека.
Я обнаружил, что этот сайт: Исключительные стратегии очень полезен при создании исключений для моих приложений.