У меня есть следующие 3 строки кода:
ServerSocket listeningSocket = new ServerSocket(earPort);
Socket serverSideSocket = listeningSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(serverSideSocket.getInputStream()));
Компилятор жалуется на все эти 3 строки, и жаловаться то же для всех 3 строк: исключение, о котором не сообщают, java.io. IOException; Более подробно они исключение брошены new ServerSocket
, accept()
и getInputStream()
.
Я знаю, что должен использовать try ... catch ...
. Но для этого я должен знать то, что это исключения означают в каждом особом случае (как должен я интерпретировать их). Когда они происходят? Я имею в виду, не в целом, но в этих 3 особых случаях.
Вы не знаете В ЧАСТНОСТИ, потому что исключение ввода-вывода также является "общим" исключением, которое может иметь много причин технически. Это означает, что возникла неожиданная проблема с вводом / выводом, но, очевидно, она имеет другие причины на локальном жестком диске, чем в Интернете.
В общем, все три предмета разрешаются вокруг сокетов. Итак, причины связаны с проблемами сети. Возможны следующие варианты:
В основном около этой линии.
То же самое произойдет или может произойти всякий раз, когда вы действительно что-то делаете с потоками.
В этом случае у вас есть две возможные основные причины:
Самый простой способ - объявить вызывающий метод для выдачи исключения IOException, но вам необходимо очистить выделенные ресурсы в предложениях finally
, прежде чем вы оставите свой метод:
public void doSession ( ) throws IOException
{
final ServerSocket listeningSocket = new ServerSocket(earPort);
try
{
final Socket serverSideSocket = listeningSocket.accept();
try
{
final BufferedReader in =
new BufferedReader(
new InputStreamReader(
serverSideSocket.getInputStream()
)
);
}
finally
{
serverSideSocket.close( )
}
}
finally
{
listeningSocket.close( )
}
}
В общем случае не имеет значения, что именно вызвало первоначальное исключение IOException, потому что ваше приложение мало что может сделать, чтобы исправить ситуацию.
Однако в качестве общего ответа на ваш вопрос "что делать" у вас есть несколько вариантов.