[英]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.