含有 SocketAddress 的 DatagramPacket 建構子不再宣告 SocketException

在 Java 8 中,接受 java.net.SocketAddress 引數的 java.net.DatagramPacket 建構子已移除可擲出 SocketException 的宣告。 在 Java 8 之前,java.net.DatagramPacket 建構子已宣告可擲出 java.net.SocketException,但這些建構子從未擲出異常狀況。

如果包含 SocketAddress 引數的 DatagramPacket 建構子以捕捉 SocketException 或其超類別 java.io.IOException 的 try 區塊括住,此規則會標示這些建構子,如下列範例所示:

	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.net.DatagramPacket Java 說明文件。