Ну, в зависимости от того, какой тип приложения вы пишете, статические инициализаторы, делающие все, что выходит за пределы JVM, обычно являются плохой идеей.
К проблеме: если я правильно прочитал ваш код, вы сначала перехватите все Throwable
s в статическом инициализаторе SessionFactoryUtil
, напишите сообщение об ошибке для стандартной ошибки a, а затем сами создадите новый ExceptionInInitializerError
, завернув в него пойманную Throwable
.
Статические инициализаторы IIRC вызываются первым делом после загрузки класса. Трассировка стека говорит нам, что это происходит, вероятно, от основного метода в классе RtaMain
, так как SessionFactoryUtil.getSessionFactory()
, кажется, оттуда вызывается, что вызывает загрузку класса.
Чтобы поймать эту ошибку, вам нужно попробовать / поймать окружение вызова getSessionFactory()
в главном методе вашего класса RtaUtil
, перехватывая Throwable или, по крайней мере, конкретный throwable, который вы бросаете в статический инициализатор самостоятельно, ExceptionInInitializerError
.
НТН