[英]Java Error: Unreported exception?
我有以下方法:
public T peek() throws StackEmptyException {
Node<T> tracker = head;
while(tracker.getNext() != null) {
tracker = tracker.getNext();
}
return tracker.getItem();
}
问题是当我尝试做类似的事情时
int firstOne = stack.peek();
我得到一个unreported exception StackEmptyException
,我不知道我在这一点上做错了什么。 StackEmptyException
是在一个单独的类中完成的。 我想这个类扩展了我制作的新异常类吗? 如此迷茫。 想家伙?
由于StackEmptyException
是一个已检查的异常 (您不应该首先执行此操作),因此在调用peek()
方法时应该处理该异常。 规则是,您应该处理异常或声明它被抛出。
但是,我会退后一步,将StackEmptyException
更改为Unchecked Exception 。 然后你不需要处理它或声明它被抛出。
由方法抛出的已检查异常(即,扩展Exception
但不是RuntimeException
或Error
)应该由此方法的调用者以递归方式处理。
在这里你有.peek()
,它会抛出异常类E
(坏名称,但这只是为了说明)。 您必须在调用.peek()
的foo()
方法中执行以下操作之一:
catch
它,或者 那就是:
// catch
void foo()
{
try {
peek();
} catch (E e) {
// something
}
}
要么:
// throw
void foo() throws E
{
peek();
}
你甚至可以重新抛出它:
// catch then rethrow
void foo() throws E
{
try {
peek();
} catch (E e) {
// something, then
throw e;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.