相关链接:细述Java技术开发规则--基本篇 本文介绍的Java规则的说明分为3个主要级别,中级是平时开发用的比较多的级别,在今后将陆续写出其他的规则。遵守了这些规则可以提高程序的效率、使代码又更好的可读性等。 一、在finally方法里关掉input或者output资源,方法体里面定义了input或者output流的话,需要在finally里面把它关掉。
以下这几种调用不需要遵守这条规则,因为colse()方法不起作用:
java.io.StringWriter java.io.ByteArrayOutputStream java.io.ByteArrayInputStream 如果再方法返回的时候没有调用close()方法来释放input()和output()的资源的话,会导致一个系统资源泄漏。而且在任何情况下都要确定在返回全调用了close()方法,包括出现异常的时候。所以需要在finally方法里面加入这个方法。这样就保证了在任何情况下都会关闭资源。
错误示例:
public class CIO { public void method (java.io.File f) { java.io.FileInputStream fis = null; try { fis = new java.io.FileInputStream (f); fis.read (); fis.close (); } catch (java.io.FileNotFoundException e1) { System.out.println("File not found"); } catch (java.io.IOException e2) { System.out.println("I/O Exception"); } // 如果出现异常,这里就不能保证关闭资源。 } } 修正后的代码:
public class CIOFixed { public void method (java.io.File f) { java.io.FileInputStream fis = null; try { fis = new java.io.FileInputStream(f); fis.read (); } catch (java.io.FileNotFoundException e1) { System.out.println("File not found"); } catch (java.io.IOException e2) { System.out.println("I/O Exception"); } finally { if (fis != null) { try { fis.close (); } catch (java.io.IOException e) { System.out.println("I/O Exception"); } } } } }
二、else的注意问题
一般总认为如果if语句只有一句的话,那么{}就是可要可不要的了。可是如果if有else嵌套的话,就不一样了,{}是必需的
错误示例:
if (i < 5) if (i < 2) i++; else i--; 修改后:
if (i < 5) { if (i < 2) i++; } else { i--; }
三、不要再catch()块里什么代码也不放
在catch()块里面放入一些错误处理代码是一个好的习惯。但是如果catch()里面有有关javadoc 的代码,那也是可以的。
错误示例:
try { System.in.read (); } catch (java.io.IOException e) { // 错误 } 正确:
try { System.in.read (); } catch (java.io.IOException e) { System.out.println("Descriptive error"); }
|