我应该如何处理函数BufferReader.readline()抛出的IOException?

时间:2013-09-04 01:44:14

标签: java exception exception-handling ioexception

每当遇到java异常时,我总是陷入困境,无论是直接抛出异常还是捕获异常。如果我发现异常,我应该只打印堆栈跟踪还是在catch块中做更多工作?例如,我是逐行读取文件,函数 BufferedReader.readLine()抛出 IOException ,它似乎是已检查(与未经检查异常相比)异常,因为用户被告知明确处理此异常,对吧?虽然我必须处理它,但似乎除了打印堆栈跟踪我什么都不能做好吧,这真的很奇怪。我应该抓住或抛出这个例外吗?如果我抓住它,我应该怎么做catch块?

3 个答案:

答案 0 :(得分:0)

它不只是打印堆栈跟踪,

  • 您可以将异常信息放在单独的日志中
  • 如果您发生异常,可以关闭并删除该文件。

如果你避免异常,调用方法将必须处理它。

答案 1 :(得分:0)

您可以执行以下操作:

  1. 在日志文件中记录异常信息。您可以使用以下方法填充异常信息。

    public String populateExceptionStackTrace(Exception e){     StringBuilder sb = new StringBuilder();     。sb.append(e.toString())附加( '\ n');     for(StackTraceElement elem:e.getStackTrace()){         sb.append(“\ tat”)。append(elem).append('\ n');     }     return sb.toString(); }

  2. 如果InputStream不为null,请尝试关闭它。

  3. 使用有意义的消息抛出您自己的例外消息,让用户知道会发生什么。

答案 2 :(得分:0)

这是关于哪个部分负责此异常

例如,如果您正在开发一个工具包作为jar,也许您应该将IOException 放在这样的方法中PrasadIOUtils.ReadFile(String path),这应该只是提供读取文件的功能,而不是处理异常。

相反,当你在代码中调用方法Exception时,你应该抓住PrasadIOUtils.ReadFile(String path)。因为这是您的逻辑部分,并且您是负责处理Exception以使您自己的项目更强大和容错的人。

这就是我的理解,希望它有所帮助。 :)

P.S。如果您仍然感到困惑,除了打印预期的堆栈跟踪之外没什么可做的,您可以谷歌异常链接以获取更多信息。这是一个java设计模式,也许它会让你在Exception上了解更多。