簡體   English   中英

為什么我們需要“try”關鍵字?

[英]Why do we need "try" keyword?

今天我寫了一些 Java,它的結構是這樣的:

if (someCondition) {
    try {
        doSomething();
    } catch (SomeException e) {
        handleException(e);
    }
}

它看起來有點難看,所以我決定從中刪除多余的{} -block。

if (someCondition) try {
    doSomething();
} catch (SomeException e) {
    handleException(e);
}

這讓我認為try關鍵字實際上是多余的。 catchfinally after {} -block 是否足以通知編譯器/程序員塊內拋出的異常有特殊處理?

編輯:澄清我並不是說整個 try 塊是多余的。 只是try關鍵字是。 上面的例子可以寫成:

if (someCondition) {
    doSomething();
} catch (SomeException e) {
    handleException(e);
}

編輯:根據要求這里是一個示例方法,沒有如果:

public void someMethod() {
   {
       doSomething();
   } catch (SomeException ex) {
       handleException(e);
   }
}

再次,清除沒有try關鍵字。

根據 Java 語法: catch 塊應按照 Java 語法與 try 塊相關聯。 如果你不寫 try 並只寫 catch 塊,那么 java 編譯器會拋出錯誤。

為什么這樣設計:為什么我們需要將每個 catch/finally 塊與 try 相關聯,是為了編寫異常特定的代碼,在相關的 try 塊中發生異常時應該執行這些代碼。

如果 Java 被設計為在沒有 try 塊的情況下繼續,那么程序員不知道要編寫什么特定代碼 catch 塊,並最終在一個 catch 塊中為所有類型的異常編寫回退代碼,導致對任何類型的異常執行所有 catch 塊代碼.

同樣根據您對 catch 塊的放置的懷疑,如果您不編寫 try 然后 catch 塊(如果由 Java 設計者設計)必須處理在它上面編寫的整個代碼中生成的異常,這導致上面解釋的場景段落。

所以,最好有可能產生異常的代碼並與可以有特定代碼來處理該異常的catch塊相關聯。 在try塊之后編寫多個catch塊也是同樣的目的,最具體或可能的異常在第一個catch 塊並在最后具有通用的 catch 異常塊。

Try 塊讓 catch 塊現在阻止他內部發生的事情。

暫無
暫無

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

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