Java网络编程从入门到精通(19):套接字(Socket)的异常

简介: 本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)     在Socket类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。

本文为原创,如需转载,请注明作者和出处,谢谢!

上一篇:
Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)

   
在Socket类中有很多方法在声明时使用throws抛出了一些异常,这些异常都是IOException的子类。在Socket类的方法中抛出最多的就是SocketException,其余还有七个异常可供Socket类的方法抛出。这些异常的继承关系如图1所示。其中灰色背景框所描述的例外就是Socket类的方法可能抛出的异常。



图1  异常类继承关系图
  • public class IOException extends Exception

   这个异常是所有在Socket类的方法中抛出的异常的父类。因此,在使用Socket类时只要捕捉(catch)这个异常就可以了;当然,为了同时捕捉其它类中的方法的异常,也可以直接捕捉Exception。

  • public class SocketException extends IOException

   这个异常在Socket类的方法中使用得最频繁。它也代表了所有和网络有关的异常。但如果要想知道具体发生的哪一类的异常,就需要捕捉更具体的异常了。

  • public class ConnectException extends SocketException

    ConnectException异常通常发生在由于服务器忙而未响应或是服务器相应的监听端口未打开。如下面的语句将抛出一个ConnectException异常。

Socket socket  =   new  Socket( " www.ptpress.com.cn " 1234 );
  • public class BindException extends SocketException

   这个异常在多个Socket或ServerSocket对象绑定在同一个端口,而且未打开SO_REUSEADDR选项时发生。如下面的四条语句将抛出一个BindException异常:

Socket socket1  =   new  Socket();
Socket socket2 
=   new  Socket();
socket1.bind(
new  InetSocketAddress( " 127.0.0.1 " 1234 ));
socket2.bind(
new  InetSocketAddress( " 127.0.0.1 " 1234 ));
  • public class NoRouteToHostException extends SocketException

    这个异常在遇到防火墙或是路由无法找到主机的情况下发生。

  • public class UnknownHostException extends IOException

    这个异常在域名不正确时被抛出。如下面的语句将抛出一个UnKnownHostException异常:

Socket socket1  =   new  Socket( " www.ptpress123.com.cn " 80 );
  • public class ProtocolException extends IOException

   这个异常并不经常被抛出。由于不明的原因,TCP/IP的数据包被破坏了,这时将抛出ProtocolException异常。

  • public class SocketTimeoutException extends InterruptedIOException

   如果在连接超时和读取数据超时时间过后,服务器仍然未响应,connect或read方法将抛出SocketTimeoutException异常。

下一篇:
Java网络编程从入门到精通(20):HTTP协议简介



国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

目录
相关文章
|
2月前
|
Java API 调度
如何避免 Java 中的 TimeoutException 异常
在Java中,`TimeoutException`通常发生在执行操作超过预设时间时。要避免此异常,可以优化代码逻辑,减少不必要的等待;合理设置超时时间,确保其足够完成正常操作;使用异步处理或线程池管理任务,提高程序响应性。
132 12
|
29天前
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
76 8
|
1月前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
126 3
图卷积网络入门:数学基础与架构设计
|
1月前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
111 2
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
90 3
|
2月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
2月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
6月前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
6月前
|
Java API 网络安全
Java网络编程入门
Java网络编程入门
|
6月前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解