Комментарии 1
Забавное использование, но, имхо, нестабильное.
Как минимум, вычисление `int start` для избегания конструктора этого класса в `StackTraceElement[]` зависит от реализации конкретной jvm, емнип.
Оно может стабильно работать до некторого времени, например, пока не произойдёт апгрейд с 11 версии джавы на 17, а потом и на какую-нибудь 21-ю. Потому что в момент перехода openjdk с 5-6 до 8 версии, кажется, стало надо сдвигать не на два элемента, а на один. Или что-то в этом роде, не помню.
UPD: какой-то ответ на stackoverflow. Там ещё рядом есть про StackWalker API, про который я напрочь забыл, но голосоволка говорит, что я его уже видел. :D
---
Странный момент с сохранением этого псевдоисключения в поле объекта – туда же можно и обычное исключение сохранить, через `var field = new IllegalStateException("Some reason")`, а потом уже `throw` сделать в другом месте. (Или дважды, но там, кажется, со стектрейсом проблемы какие-то, он единожды вычисляется. Не уверен. Статические инстансы исключений не работают).
---
Для получения стектрейса можно и `Thread.curentThread().getStackTrace()` или что-то подобное использовать.
Необычная Java: StackTrace Extends Throwable