Мне интересно, если в моем коде есть какое-либо соединение или поток, который должен быть закрыт для освобождения ресурсов, что это означает для самого экземпляра соединения?
Пример кода:
CustomConnection connection;
try{
connection = //some code that opens a connection
//some code using the connection
}catch(IOException){
//Some logging and Handling of IOExceptions
}finally{
//resources cleanup
try{
connection.close();
}catch(IOException){
//Some Logging
//What else should be done here?
//Is my Connection closed at this point and can I just move on?
//Or should there be anything else done here
//to ensure that the connection is actually closed?
}
}
Например, если у меня есть открытое TCP-соединение, скажем, SQL-сервер, и я не могу закрыть его, потому что сервер сломался или мое устройство больше не может связаться с устройством.Я бы, очевидно, получил IO или, в этом случае, SQLException.Если так:
- Должен ли я считать ресурс или сокет действительно освобожденным benn?
- Будет ли JVM или ОС обрабатывать его сверхурочно?(ОС, вероятно, в конечном итоге сделает это, но в данном случае речь идет о том, что на самом деле является хорошей практикой программирования)
- Должен ли я решить проблему самостоятельно, попробовав
Редактировать 1: Язнать о конструкции "попробуй с ресурсами".Мне просто интересно, как обрабатывать закрытие соединения, если используемое соединение не поддерживает AutoCloseable.