у меня даже свои классы поверх es6-error в системе, где я переиспользую шаблоны и реагирую по catch в зависимости от инстанса ошибки
Чтобы окончательно уничтожить твой стул, могу сказать, что, хотя иметь иерархию классов ошибок - это бесспорно хорошо, но есть также обоснованное мнение, что такие ошибки можно внутри кода только возвращать, а исключения с try-cache использовать только для исключительных ситуаций, а не ошибок бизнес процессов :D.