每当遇到java异常时,我总是陷入困境,无论是直接抛出异常还是捕获异常。如果我发现异常,我应该只打印堆栈跟踪还是在catch块中做更多工作?例如,我是逐行读取文件,函数 BufferedReader.readLine()抛出 IOException ,它似乎是已检查(与未经检查异常相比)异常,因为用户被告知明确处理此异常,对吧?虽然我必须处理它,但似乎除了打印堆栈跟踪我什么都不能做好吧,这真的很奇怪。我应该抓住或抛出这个例外吗?如果我抓住它,我应该怎么做catch块?
答案 0 :(得分:0)
它不只是打印堆栈跟踪,
如果你避免异常,调用方法将必须处理它。
答案 1 :(得分:0)
您可以执行以下操作:
在日志文件中记录异常信息。您可以使用以下方法填充异常信息。
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(); }
如果InputStream不为null,请尝试关闭它。
使用有意义的消息抛出您自己的例外消息,让用户知道会发生什么。
答案 2 :(得分:0)
这是关于哪个部分负责此异常。
例如,如果您正在开发一个工具包作为jar,也许您应该将IOException
放在这样的方法中PrasadIOUtils.ReadFile(String path)
,这应该只是提供读取文件的功能,而不是处理异常。
相反,当你在代码中调用方法Exception
时,你应该抓住PrasadIOUtils.ReadFile(String path)
。因为这是您的逻辑部分,并且您是负责处理Exception
以使您自己的项目更强大和容错的人。
这就是我的理解,希望它有所帮助。 :)
P.S。如果您仍然感到困惑,除了打印预期的堆栈跟踪之外没什么可做的,您可以谷歌异常链接以获取更多信息。这是一个java设计模式,也许它会让你在Exception
上了解更多。