2017-09-14 2 views
0

ます。private void btnInsertActionPerformed(java.awt.event.ActionEventのEVT){JAVAのエラー:マルチキャッチまたは複数のcatch節特定の例外をキャッチ

if(checkInputs() && imgPath != null){ 
try { 
Connection con = getConnection(); 
PreparedStatement ps = con.prepareStatement("INSERT INTO animal_information(animal_breed,animal_age,animal_found,animal_hairColor," 
        + "animal_eyeColor,animal_specialTrait,animal_codeNumber,animal_image)" 
        + "values(?,?,?,?,?,?,?)"); 

//ps.setString(1, pawsId.getText()); 
ps.setString(1, pawsBreed.getText()); 
ps.setString(2, pawsAge.getText()); 

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
String addDate = dateFormat.format(pawsDate.getDate()); 
ps.setString(3, addDate); 
ps.setString(4, pawsHairColor.getText()); 
ps.setString(5, pawsEyeColor.getText()); 
ps.setString(6, pawsUniqueTrait.getText()); 

InputStream img = new FileInputStream(new File(imgPath)); 
ps.setBlob(7, img); 
ps.executeUpdate(); 

JOptionPane.showMessageDialog(null, "Inserted Data Successfully"); 
} catch (Exception ex) { 
JOptionPane.showMessageDialog(null, ex.getMessage()); 
} 
} 
else{ 
JOptionPane.showMessageDialog(null, "One or More Fields Are Empty"); 
} 
System.out.println("Breed => "+ pawsBreed.getText()); 
System.out.println("Age => "+ pawsAge.getText()); 
System.out.println("Hair Color => "+ pawsHairColor.getText()); 
System.out.println("Eye Color => "+ pawsEyeColor.getText()); 
System.out.println("Unique Traits => "+ pawsUniqueTrait.getText()); 
System.out.println("Image => "+ imgPath); 
} 

こんにちはみんなに置き換えることができます!私はちょうど学生であり、初心者のJavaを学んでいます。私は、この問題に遭遇しました。「複数のキャッチまたはいくつかのキャッチ句で特定の例外をキャッチすることで置き換えることができます。」という部分キャッチ(Exception ex)の画像で、黄色の下線の色があり、エラーが出ます。私は自分のデータベースにデータを挿入したいが、このエラーのため挿入しない。あなたが私のコードで見ることができるように、私はデータの印刷を試みました、そして、それはすべて成功しました。誰かが啓発して助けてくれて、私が間違っていたことを助けてくれますか?してください...

+0

コードはテキストです。人々に画像を見させないでください。いずれにしても、一度にすべての例外をキャッチすることは、一般に悪い習慣とみなされます。それはエラーではなく、悪い考えです。 –

+0

投稿にコードを追加して、imgのようにはできませんか? – Bob

+0

イメージは残念ですが、私は今編集しており、コードが掲載されています。 – missNobody

答えて

0

黄色の線はエラーではありませんが、警告または示唆です。

catch (Exception e)が広すぎるということは、スローされる可能性がある例外よりもはるかに多くの例外に適用されることです。

誰かが異なるタイプの例外をスローする新しいコードを導入する可能性があり、catchがそれを処理するとは思わないかもしれません。したがって、可能な例外を処理することがベストプラクティスです。

あなたがすべきことは、その行をcatch (SQLException e)に置き換えることです。多くの場合、警告に付随する黄色のアイコンをクリックすると、エディタに指示するオプションが表示されます。

私はあなたのコードから一つだけがSQLExceptionているが、複数があった場合、あなたは同じコードを持つすべてのpossiblitiesを処理するために、マルチキャッチを使用することができることを、try句から例外スロー可能がチェックされていると思う:

try { 
    ... 
} 
catch (FooException | BarException e) { 
    ... handle both types of exception with the same code 
} 

たり、さまざまな方法でさまざまな例外を処理する必要がある場合は、複数のcatch句を持つことができます:すべての

try { 
    ... 
} 
catch (FooException e) { 
    ... handle FooException one way 
} 
catch (BarException e) { 
    ... handle BarException differently 
} 
+0

誠にありがとうございました。 – missNobody

+0

この警告を表示しないようにするにはどうすればよいですか? – saidfagan

+0

これはIDEによって異なります。 NetBeansでは、[ツール] - > [オプション] - > [エディタ] - > [ヒント] - > [JDK移行サポート]を選択すると、[特定のキャッチを使用する] –

0

まず、黄色い線はエラーではありません。

Exceptionクラス...のIOException、ClassNotFoundExceptionが対あるサブ(子)例外クラスのすべての親クラスである

try{ 

... 

}catch(Exception e){ 

} 

このキャッチブロックキャッチたとえばにIOException、ClassNotFoundExceptionが対...など、サブクラスの例外のすべてをtryブロックがSQLExceptionをスローすると、catchブロックはこの例外をキャッチします。 tryブロックがFileNotFoundExceptionをスローした場合、catchブロックもこの例外をキャッチします。あなたのキャッチブロックは特殊な例外に特化していません。

try{ 

... 

}catch(FileNotFoundException e){ 

} 

このcatchブロックでは、FileNotFoundException例外のみがキャッチされます。

netbeansの黄色の行は、catchブロックを特殊な例外に特化できることを説明しています。

関連する問題