2016-11-18 78 views
0

在此代碼中,是否需要throw關鍵字才能傳播異常?是否有必要使用Throwables.propagate(e)使用throw關鍵字?

try { 
    //try something 
} catch (Exception e) { 
    throw Throwables.propagate(e); 
} 

Throwables文檔中說,此方法始終拋出一個異常 - 被添加throw多餘的?我能否寫下以下內容?

try { 
    //try something 
} catch (Exception e) { 
    Throwables.propagate(e); 
} 

回答

4

javadoc還指出

RuntimeException返回類型僅適用於客戶端代碼使Java 類型系統的情況下,幸福的返回值被包圍 方法所需。

,然後提供這個例子

T doSomething() { 
    try { 
    return someMethodThatCouldThrowAnything(); 
    } catch (IKnowWhatToDoWithThisException e) { 
    return handle(e); 
    } catch (Throwable t) { 
    throw Throwables.propagate(t); 
    } 
} 

換句話說,返回類型(RuntimeException)是必要的,這樣就可以在returnthrows語句使用的方法。

在上面的例子,如果你在過去catch塊省略throw,那麼Java編譯器會因爲它不能保證該值會從catch塊返回報告錯誤。 A return or throws instead indicate that the method completes at that point, abruptly.

+0

我得到了什麼問題?爲什麼downvote? –

相關問題