Рекомендация от ментора: "Вызов super.interrupt() должен происходить внутри finally блока."
Но она и так внутри finally блока. Может ли это быть из-за того, что у меня два try/catch или я всё же где-то накосячил?
package com.javarush.task.task25.task2507;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
/*
Работать в поте лица!
*/
public class Solution extends Thread {
private static final int BUFFER_SIZE = 2000; //2000 bytes
private final Socket socket;
private final InputStream in;
public Solution(Socket socket) throws IOException {
this.socket = socket;
this.in = socket.getInputStream();
}
public void interrupt() {
try {
in.close();
socket.close();
} catch (IOException IE) {
if (socket != null && !socket.isClosed()) {
try {
socket.close();
} catch (IOException ignored) {
}
}
} finally {
super.interrupt();
}
}
public void run() {
try {
byte[] buf = new byte[BUFFER_SIZE];
while (true) {
int count = in.read(buf);
if (count < 0) {
break;
} else {
if (count > 0) {
//process buffer here
}
}
}
} catch (IOException ignored) {}
}
public static void main(String[] args) {
}
}