Обработка исключения, выданного из статического блокаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Обработка исключения, выданного из статического блока

Сообщение Anonymous »

Меня смутило то, что программа завершила работу автоматически, не введя main. Оказалось, что это произошло потому, что вызов System.loadLibrary в статическом блоке выдал UnsatisfiedLinkError. Чтобы сузить проблему, вот конструкция, которая заставляет программу завершать работу молча:

Код: Выделить всё

public class T {
static void bad() {
throw new RuntimeException("Terror error!");
}

static {
System.out.println("in static");
bad();
}

public static void main(String[] args) {
System.out.println("in main");
}
}
При запуске процесс завершается автоматически после печати только «в статическом режиме» с кодом завершения 1. По крайней мере, это то, что происходит с моей текущей средой Java «OpenJDK 64-Bit». Серверная виртуальная машина Homebrew (сборка 22.0.2, смешанный режим, общий доступ)».
Конечно, это можно исправить с помощью блока try-catch вокруг плохого вызова, но что если такого блока нет, потому что программисту было непонятно, он нужен? (Например, кто-то мог сделать подобные вещи в библиотеке вне моего контроля.) Есть ли способ подключиться к обработке ошибки или RuntimeException, выброшенной из статического блока, в хотя бы получить сообщение о том, где возникла проблема?

Подробнее здесь: https://stackoverflow.com/questions/790 ... atic-block
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»