一个叫Prashant Deva的人发现在Java 5.0的java.io.PrintStream中有这样一段代码:
protected void setError() {
trouble = true;
try { throw new IOException();} catch (IOException x) {}
}
注意这段代码中 try...catch 除了空耗系统资源之外毫无意义。这样的代码隐藏在系统底层,频频使用,还伴随我们这么久,未免让人啼笑皆非。善意的猜测是,某位程序员本想在try block添加一些代码,于是先写下这些stub,之后居然忘了,留下笑柄。恶意的揣度则完全是一场逃脱了code review的恶作剧。
不过我手上并没有Java 5.0,而在Java 6.0的source中,我看到这个恶作剧已经被清除。
看来Java的io不仅仅是花哨而已呢!