В Java 8 у конструкторов java.net.DatagramPacket с параметром java.net.SocketAddress
удалено объявление SocketException в спецификаторе throws.
До Java 8 в спецификаторе throws конструкторов java.net.DatagramPacket была объявлена
исключительная ситуация java.net.SocketException, но она в них никогда не возникала.
Это правило помечает конструкторы DatagramPacket с параметром SocketAddress,
находящиеся в блоке try с обработчиком SocketException или java.io.IOException
(см. следующий пример).
public DatagramPacket getDatagramPacket(SocketAddress socketAddress,
byte[] bytes) {
DatagramPacket dp = null;
try {
dp = new DatagramPacket(bytes, bytes.length, socketAddress);
} catch (SocketException e) {
e.printStackTrace();
}
return dp;
}
|
Затрагиваются следующие конструкторы DatagramPacket:
public DatagramPacket(byte[] buf,
int offset,
int length,
SocketAddress address)
public DatagramPacket(byte[] buf,
int length,
SocketAddress address)
Если в остальном коде блока try исключительная ситуация SocketException
не возникает, то при компиляции для Java 8 возникнет ошибка, указывающая на исключительную
ситуацию, которая никогда не возникает.
Удалите блок catch, чтобы устранить эту ошибку.
Дополнительная информация о классе java.net.DatagramPacket
приведена в документации Java по классу java.net.DatagramPacket.