only Error
, который я регулярно использовал в бизнес-коде: ExceptionInInitializerError
. У вас нет другого выбора в static
блоках инициализатора.
Но даже если вы выбросите это в веб-приложение, веб-приложение все равно будет прослушивать HTTP-запросы. Лучше всего выполнить загрузку или инициализацию модуля при прослушивании Filter
при url-pattern
из /*
и позволить Filter
соответствующим образом блокировать HTTP-запросы. Э.Г.
private boolean allModulesAreLoaded;
@Override
public void init(FilterConfig config) {
try {
// Load modules.
allModulesAreLoaded = true;
} catch (Exception e) {
// Handle.
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
if (allModulesAreLoaded) {
chain.doFilter(request, response);
} else {
throw new ServletException("Not all modules are loaded.");
}
}
Это приведет к ошибке HTTP 500 с данным сообщением.