Il costruttore DatagramPacket con SocketAddress non dichiara più SocketException

In Java 8, il costruttore java.net.DatagramPacket che accetta un argomento java.net.SocketAddress ha rimosso la dichiarazione che è possibile generare un'eccezione SocketException. Prima di Java 8, il costruttore java.net.DatagramPacket dichiarava che poteva essere generata un'eccezione java.net.SocketException, ma tale eccezione non è stata mai generata da questi costruttori.

Questa regola contrassegna i costruttori DatagramPacket che includono un argomento SocketAddress che sono circondati da un blocco try che cattura la SocketException o la relativa superclasse java.io.IOException, come mostrato nel seguente esempio:

	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;
	}

Sono interessati i seguenti costruttori DatagramPacket:

public DatagramPacket(byte[] buf,
                      int offset,
                      int length,
                      SocketAddress address)

public DatagramPacket(byte[] buf,
                      int length,
                      SocketAddress address)

Se nessun altro codice all'interno del blocco try genera un'eccezione SocketException, quando si compila con Java 8 un errore indicherà che l'eccezione è irraggiungibile. Rimuovere il blocco catch in modo da evitare che si verifichi l'errore.

Per informazioni sulla classe java.net.DatagramPacket, consultare la documentazione Java Class java.net.DatagramPacket.