簡體   English   中英

為什么拋出RuntimeException錯誤而不是IOException消息?

[英]Why throw RuntimeException Error instead of IOException Message?

我從游戲書中獲得了這段代碼。 作者解釋它將打開一個音樂文件。

public Music newMusic(String filename) {
    try {
        AssetFileDescriptor assetDescriptor = assets.openFd(filename);
        return new AndroidMusic(assetDescriptor);
    } catch (IOException e) {
        throw new RuntimeException("Couldn't load music '" + filename + "'");
    }
}

方法AssetFileDescriptor.openFd(filename) throws a IOException

我的問題是:為什么我們需要拋出RuntimeException消息而不是IOException消息?

IOException是已檢查的異常,並且必須由引發該異常的任何方法聲明。 RuntimeException未被選中,可以從任何方法中拋出。

如示例代碼中所示,通常在無法從本地恢復檢查的異常並且認為異常導致程序失敗的情況下,可以在RuntimeException中包裝檢查的異常。 一旦將檢查的異常包裝在RuntimeException中,然后RuntimeException便可以一直傳播到整個堆棧(如果發生),而不管是否存在異常聲明。

因此,您無需將調用方法聲明為catch或throwing IOException

在某些情況下,但並非在所有情況下,檢查異常都可能很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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