在我的一个Java应用程序代码中,我有一个try-catch-finally块,其中try块创建一些输入和输出流,如果出现问题,我将关闭任何先前打开的流finally.
finally
{
if(inputStream != null)
inputStream.close();
if(outputStream != null)
outputStream.close();
}
Run Code Online (Sandbox Code Playgroud)
但是<stream>.close()Eclipse中的这行显示了该行代码中的"Unhandled exception IOException"错误,并显示该解决方案是try/catch在finally块中包含另一个,这似乎是编程实践中的坏事,我不想在finally块中.
我的问题是:是否有可能在Eclipse中删除此错误并try/catch仅在我需要它时使用而不是eclipse告诉我进行try/catch添加.(因为我已经开始尝试通过更换以避免异常try/catch与if/else越好).
这不是Eclipse错误,它是Java编译器错误.Eclipse只是为您报告Java编译错误.由于代码在没有 try/catch子句的情况下无法编译,因此无法 "关闭" .它是Java中的一个安全功能,它会强制您处理通常抛出的异常.
方法在签名中有例外.例如,InputStream.close()抛出IOException,强制您在try/catch块中处理它.
public void close() throws IOException {
...
Run Code Online (Sandbox Code Playgroud)
抛出异常是告诉程序一个重要问题 - 必须处理 - 的一种方式.
我的问题是:是否有可能在eclipse中删除此错误并在需要时使用try/catch而不是eclipse告诉我做try/catch add.
不,这是不可能的.
(因为我已经尝试通过用if/else替换try/catch来避免异常).
您通常不应尝试try/catch用if/else块替换块.它们是具有不同目的的两个不同特征.
例外是Java必不可少的功能. 阅读并了解它.
正确地应该这样做以确保我们尝试关闭两个流.
finally
{
try {
if(inputStream != null)
inputStream.close();
}
catch(Exception e)
{ /* Ignore */ }
try {
if(outputStream != null)
outputStream.close();
}
catch(Exception e)
{ /* Ignore */ }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6947 次 |
| 最近记录: |