<b>诊断Java代码: 空标志错误情势</b>[Java编程]
本文“<b>诊断Java代码: 空标志错误情势</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
空标志错误情势
在我的上一篇文章中,我阐明了用空指针替换各种差别基本范例的数据是若何成为惹起 NullPointerException 非常最广泛的缘由之一的.这一次,我将阐明用空指针替换非常情形怎么也会招致问题的呈现.在 Java 程序中,非常情形普通是通过抛出非常,并在得当的掌握点捕捉它们来举行处理.但是常常看到的办法是通过返回一个空指针值来表明这种情形(以及,大概打印一条消息到 System.err ).假如调用办法没有明确地查抄空指针,它大概会尝试丢弃返回值并触发一个空指针非常.
您大概会猜想,之所以称这种情势为空标志错误情势,是因为它是不一致地利用空指针作为非常情形的标志惹起的.
起因
让我们来考虑一下下面的这个简单的桥类(从 BufferedReaders 到 Iterators ):
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Iterator;
public class BufferedReaderIterator implements Iterator {
private BufferedReader internal;
public BufferedReaderIterator(BufferedReader _internal) {
this.internal = _internal;
}
public boolean hasNext() {
try {
boolean result = true;
// Let's suppose that lines in the underlying input stream are known
// to be no greater than 80 characters long.
internal.mark(80);
if (this.next() == null) {
result = false;
}
internal.reset();
return result;
}
catch (IOException e) {
System.err.println(e.toString());
return false;
}
}
public Object next() {
try {
return internal.readLine();
}
catch (IOException e) {
System.err.println(e.toString());
return null;
}
}
public void remove() {
// This iterator does not support the remove operation.
throw new UnsupportedOperationException();
}
}
以上是“<b>诊断Java代码: 空标志错误情势</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |