簡體   English   中英

Java錯誤:未報告的異常?

[英]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但不是RuntimeExceptionError )應該由此方法的調用者以遞歸方式處理。

在這里你有.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM