Port BindExceptions can occur if a port is already occupied by some other process and you try to use it again.
Below is a simple example that demonstrates this and the mechanisms involved.
import java.net.*;
import java.io.*;
public class HandleBindException
{
public static void main(String args[])
{
HandleBindException handleBindException = new HandleBindException();
handleBindException.proceed();
}
private void proceed(){
final int BINDING_PORT = 5666 ;
ServerSocket firstServerSocket = null, secondServerSocket = null;
try {
firstServerSocket = new ServerSocket(BINDING_PORT);
secondServerSocket = new ServerSocket(BINDING_PORT);
} catch (BindException e) {
System.out.println("BindException: " + e);
if (firstServerSocket == null)
{
System.out.println("firstServerSocket is null. Further handling necessary.");
}
if (secondServerSocket == null)
{
System.out.println("secondServerSocket is null. Further handling necessary.");
}
} catch (IOException ioe) {
System.out.println("IOException: " + ioe);
}
}
}
/*
Expected output:
[root@mypc]# java HandleBindException
BindException: java.net.BindException: Address already in use: JVM_Bind
secondServerSocket is null. Further handling necessary.
*/