gpt4 book ai didi

Java:BufferedReader readLine() 中的 IO 异常有什么用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:07 27 4
gpt4 key购买 nike

我可以用 try-catch 循环“修复”下面的异常,但我不明白原因。

  1. 为什么“in.readLine()”部分不断引发 IOExceptions?
  2. 抛出此类异常的真正目的是什么,目标可能不仅仅是更多的副作用?

代码和 IOExceptions

$ javac ReadLineTest.java 
ReadLineTest.java:9: unreported exception java.io.IOException; must be caught or declared to be thrown
while((s=in.readLine())!=null){
^
1 error
$ cat ReadLineTest.java
import java.io.*;
import java.util.*;

public class ReadLineTest {
public static void main(String[] args) {
String s;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// WHY IOException here?
while((s=in.readLine())!=null){
System.out.println(s);
}
}
}

最佳答案

基本思想是 BufferedReader 委托(delegate)给不同类型的 Reader,因此它会传递该异常。

这种不同类型的 Reader 可以从某种易变的外部资源中读取,例如 FileReader 中的文件系统。文件系统读取随时可能由于多种原因而失败。 (如果 Reader 从网络流中获取其基础数据,情况会更糟)。该文件可能会从您的下方删除(取决于所涉及的文件系统和操作系统)。

因为您无法预测代码会发生什么,您会得到一个已检查的异常 - 关键是 API 告诉您您应该考虑这样一个事实,即即使您的代码没有任何问题,此操作也可能无法执行代码。

关于Java:BufferedReader readLine() 中的 IO 异常有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2629649/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com