如果抛出IOException,我该怎么办?

Rom*_*man 5 java exception-handling

我有以下3行代码:

ServerSocket listeningSocket = new ServerSocket(earPort);
Socket serverSideSocket = listeningSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(serverSideSocket.getInputStream()));
Run Code Online (Sandbox Code Playgroud)

编译器抱怨所有这三行,并且它对所有3行的抱怨是相同的:未报告的异常java.io.IOException; 在更多的细节,这些异常被抛出new ServerSocket,accept()getInputStream().

我知道我需要使用try ... catch ....但为此,我需要知道在每个特定情况下这个例外意味着什么(我应该如何解释它们).什么时候发生?我的意思是,不是一般的,而是在这3个特殊情况下.

小智 5

你不知道特别是因为IO异常也是一个"通用"异常,在技术上可能有很多原因.这意味着围绕输入/输出发生了意想不到的问题,但显然它在本地硬盘上的原因与在互联网上的原因不同.

通常,所有三个项目都会解决套接字问题.因此,原因与网络问题有关.可能的是:

  • 根本没有网络,甚至没有localhost(将是一个严重的技术问题).
  • 当端口号被给定时,端口已在使用中(新的服务器套接字(earPort))
  • 网络问题 - 例如,somseone在某些事情中偶然发现了电缆.也可能是质量不好,DDOS攻击等的原因.
  • 端口耗尽 - 没有可用于新连接的客户端端口.

基本围绕这条线.

只要您实际使用流来执行某些操作,就会发生相同的情况.

在这个问题上,你有两个可能的主要原因:

  • 第一行:套接字已在使用中(程序启动2次,与其他程序相同的端口).除非用户做某事,否则这通常是不可修复的.
  • 通用稍后的运行时错误.这些可能在正常操作期间发生.