黑马程序员技术交流社区

标题: 关于ServerSocket的异常的一个小问题 [打印本页]

作者: 张飞年    时间: 2012-9-21 00:12
标题: 关于ServerSocket的异常的一个小问题
本帖最后由 张飞年 于 2012-9-26 00:21 编辑

今天在写一个完整的聊天程度的时候碰到一个问题,想好半天不知原因到底是不是这样,发上来大家一起注意下,知道的大虾说说自己意见
这是正确的格式(不报错):
  1. ServerSocket ss = null;
  2. try {
  3.                         ss = new ServerSocket(10008);// 创建服务端
  4.                 } catch (BindException e) {
  5.                         System.out.println("端口忆经被占用");
  6.                 } catch (IOException e) {
  7.                 }
  8. //或者
  9. ServerSocket ss = null;
  10.   try {
  11.    ss = new ServerSocket(10008);// 创建服务端
  12.   } catch (IOException e) {
  13.    System.out.println("端口忆经被占用");
  14.   }
复制代码
这样子就会出现错误:
  1. ServerSocket ss = null;
  2.                 try {
  3.                         ss = new ServerSocket(10008);// 这里会出错,让再加一个catch或者try-catch
  4.          } catch (BindException e) {
  5.                         System.out.println("端口忆经被占用");
  6.                 }
复制代码
我想这里的原因是不是因为BindException是IOException的子类的缘故,这创建端口的过程中不光可能发生端口占用异常还有可能发生IO异常,所以try了该产生服务端口的语句后只处理Io就没事,而只处理了端口占用异常就把IO异常给拉下了没处理,是 不是这样?

作者: 张 涛    时间: 2012-9-21 00:16
是这样的,亲
作者: 张 涛    时间: 2012-9-21 00:24
给张图片看看:

a.png (3.88 KB, 下载次数: 16)

a.png

作者: AngieFans85    时间: 2012-9-21 00:30
嗯,3楼的朋友回答的很好,相信楼主已经明白了.
作者: 王陶成    时间: 2012-9-21 01:29


        ServerSocket 的构造方法 ServerSocket (int port)  抛出了一个 IOException ,这个异常必须处理,调用的方法捕捉,或再抛出


        

搜狗截图_2012-09-21_01-29-09.jpg (3.55 KB, 下载次数: 21)

搜狗截图_2012-09-21_01-29-09.jpg

作者: 赵永康    时间: 2012-9-21 10:00
你抓住的异常不够大 来个狠点的直接抓住Exception肯定不会错的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2