簡體   English   中英

我可以從方法中捕獲拋出異常嗎?

[英]Can I catch a throw exception from method?

當我嘗試從方法聲明中引發異常時,出現錯誤“ ClassNotFoundException的Unreachable catch塊。永遠不會從try語句主體中引發此異常”。

代碼是這樣的:

public class MenuSQL {
    private static String sentence = "";
    private static int option;
    Statement sentenceSQL = ConnectSQL.getConexion().createStatement();

public MenuSQL(int option) throws ClassNotFoundException, SQLException {
    super();
    this.option = option;
    try {
        System.out.print("Introduce the sentence: ");
        System.out.print(sentence);
        sentence += new Scanner(System.in).nextLine();
        System.out.println(MenuSentence.rightNow("LOG") + "Sentence: " + sentence);

        if (opcion == 4) {
            MenuSentence.list(sentence);
        } else {
            sentenceSQL.executeQuery(sentence);
        }
    } catch (SQLException e) {
        System.out.println(MenuSentence.rightNow("SQL") + "Sentence: " + sentence);
    } catch (ClassNotFoundException e) {
        System.out.println(MenuSentence.rightNow("ERROR") + "Sentence: " + sentence);
    }
}
}

如何捕獲ClassNotFoundException 提前致謝。

try{...} catch(){...}語句的catch塊只能捕獲try{...}塊引發的異常。 (或該異常的超類)

try {
    Integer.parseInt("1");
    //Integer.parseInt throws NumberFormatException
} catch (NumberFormatException e) {
    //Handle this error
}

但是,您基本上想做的是:

try {
    Integer.parseInt("1");
    //Integer.parseInt throws NumberFormatException
} catch (OtherException e) {
    //Handle this error
}

因為沒有在你的發言try{...}塊扔OtherException ,編譯器就會給你一個錯誤,因為它知道, 沒有在你try{...}塊都不會拋出異常,所以你不應該嘗試catch永不thrown東西。

就您而言, try{...}塊中沒有任何東西拋出ClassNotFoundException ,因此您無需捕獲它。 您可以從代碼中刪除catch (ClassNotFoundException e) {...} ,以修復錯誤。

暫無
暫無

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

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