簡體   English   中英

異常必要性的鑄造

[英]Casting of Exception necessity

快速提問的家伙,我已經看到很多關於 try/catch 塊的代碼,我已經看到很多次了,人們使用特定的異常來處理東西。 我的意思是,你有什么理由這樣做? 我通常只是在 catch 塊中放一個 Exception e 並從日志中讀出它......這是性能問題還是只是習慣?

擁有不同的異常類可以讓您擁有特定的異常代碼,而無需確定類型。

例如,而不是寫:

try {
   ...do some stuff
} catch( Exception e ) {
    if( e instanceof NullpointerException ) {
        ... do something
    } else if( e instanceof IOExceptio ) {
        ... do something else 
    }
}

你可以寫:

try {
    ... do something ...
} catch ( NullpointerException epe ) {
    ... handle NPE
} catch ( IOException ioe ) {
    ... handle IO Exception
}

等等。

此外,您還可以選擇僅捕獲某些異常,並允許該方法拋出其他異常:

public void doSomeIO() throws IOException {

    try {
        ... do something ...
    } catch( NullpointerException ) {
        ... handle NPE
    }

}

然后你會稱之為:

try {
    doSomeIO();
except ( IOException ) {
    handle the IO exception
}

通過這種方式,您可以在它所屬的地方進行特定的異常處理,並允許其他人在可以更好地處理的地方冒泡。

捕獲ClassCastException的錯誤與捕獲ArrayIndexOutOfBounds異常的錯誤不同。 你應該相應地處理它們。

暫無
暫無

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

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