Невозможно поймать исключение, когда оно выбрасывается из этого - PullRequest
0 голосов
/ 11 декабря 2019

Я сделал что-то вроде этого:

try {
    client = new Client(this, "192.168.0.108", 5204);
}catch(ConnectException e) {
    e.printStackTrace();
}

IDE говорит:

Недоступный блок перехвата для ConnectException. Это исключение никогда не выдается из тела оператора try

, но когда я запускаю его и принудительно закрываю программу (окно GUI, в котором она выполняется), она генерирует исключение из этой строки кода (объект клиента).

Я знаю, что в -try-блоке у меня нет ничего, что может формально вызвать исключение, но в реальном исключении выбрасывается из этого блока.

Как перехватить это ConnectException?

Трассировка стека: https://prnt.sc/q9hzdp

1 Ответ

2 голосов
/ 11 декабря 2019

Ваша IDE жалуется, потому что исключение, которое вы пытаетесь отловить, уже перехватывается в конструкторе клиента.

Взято из Client.java source:

public Client(PApplet parent, String host, int port) {
    ...
    try {
      socket = new Socket(this.host, this.port);
      ...
    } catch (IOException e) {
      e.printStackTrace();
      ...
    }
}

ConnectException расширяет IOException, поэтому исключение уже перехватывается библиотекой обработки. Поскольку исключение не перебрасывается, оно не распространяется на ваш пользовательский try-catch и делает его избыточным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...