Socket 编程中常见的异常主要有:
- IOException:IO异常,例如连接失败、读写失败等。
try {
Socket socket = new Socket("127.0.0.1", 8000);
} catch (IOException e) {
e.printStackTrace();
}
- ConnectException:连接失败异常,例如服务器未启动。
try {
Socket socket = new Socket("127.0.0.1", 8000);
} catch (ConnectException e) {
e.printStackTrace();
}
- SocketTimeoutException: socket 超时异常,例如服务器响应过慢。
socket.setSoTimeout(1000); // 设置1s超时时间
try {
InputStream in = socket.getInputStream();
byte[] buffer = new byte[1024];
in.read(buffer);
} catch (SocketTimeoutException e) {
e.printStackTrace();
}
- PortUnreachableException:端口不可达异常,例如目标端口不存在。
try {
DatagramSocket socket = new DatagramSocket(8000);
socket.send(packet);
} catch (PortUnreachableException e) {
e.printStackTrace();
}
- SocketException: socket 异常,例如 socket 已关闭。
InputStream in;
try {
in = socket.getInputStream();
} catch (SocketException e) {
e.printStackTrace();
}
- BindException: 绑定端口失败异常,例如端口已被占用。
try {
ServerSocket server = new ServerSocket(8000);
} catch (BindException e) {
e.printStackTrace();
}
总之,通过 try-catch 语句捕获这些异常,可以使 Socket 程序具有更强的健壮性,避免程序崩溃。事先考虑这些异常的产生原因,并作出合理处理,可以让程序更加完善。