java - java中BufferReader的异常处理

标签 java exception exception-handling bufferedreader

在这个简单的程序中,为什么我必须处理异常?

public static void main (String args[ ]) throws IOException
   {
        BufferedReader in = new BufferedReader(
        new InputStreamReader(System.in));

    System.out.print("Insert something : ");
        System.out.println("You inserted : "+in.readLine());    
   }

最佳答案

从标准输入读取不太可能导致任何类型的 IOException。但是,BufferedReader 并不知道这一点,它假设它包装的任何东西都会抛出 IOException 而它只是传递它。我会考虑改用 java.util.Scanner 类,以避免 BufferedReader 在这里检查异常的烦恼。

JVM 将在程序终止时为您处理关闭标准输入,因此关闭读取器应该不是问题,除非您最终可能需要刷新 BufferedReader 以获取其所有内容。这是更喜欢 Scanner 的另一个原因。

对于一个小程序,让 main 方法抛出异常可能很好,这些异常将被写入控制台(具体来说,是 stderr)。只要那是你想要的行为,在这里抛出 IOException 就可以了。在现实生活中,程序可以从 shell 脚本执行,shell 脚本可以将程序的输出重定向到一个文件,这样程序抛出的任何内容都会被记录下来。

关于java - java中BufferReader的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270513/

相关文章:

java - 在 JavaFX BubbleChart 的气泡内创建文本

java - 添加将 JPanel 扩展为 JFrame 的公共(public)类

Java PrintWriter 异常

java - Arquillian + TestNG : How to access container managed objects in @Before/@After methods?

c++ - 调用 MiniDumpWriteDump() 以捕获崩溃的最佳位置

c++ - 如果在初始化静态局部变量之前发生异常会怎样?

c# - 从 FaultException<> 获取真正的异常

ruby-on-rails - 在 Rails 项目中保留自定义异常定义的常规位置是什么?

c# - 如何忽略linq to sql中违反主键约束

.net - 如何:生成UnhandledException?