Java错误:可以多抓或几个catch子句捕捉特定异常
私人无效btnInsertActionPerformed(EVT java.awt.event.ActionEvent中){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。我遇到了这个问题“可以用多捕获或几个捕获子句捕捉特定的异常”在部分catch(Exception ex)的图像中它有黄色下划线颜色,这就给我一个错误。我想插入数据到我的数据库,但它没有插入,因为这个错误。正如你可以在我的代码中看到的,我试图打印数据,它都是成功的。有人可以请启发和帮助我,我做错了什么。请...
黄线不是错误,而是警告或建议。
它的建议是你的catch (Exception e)
过于宽泛:它将应用于更多类型的异常而不仅仅是可能抛出的异常。
有人可能会引入引发不同类型异常的新代码,他们可能不希望您的catch
来处理它。所以,最好的做法是只处理可能的异常。
你应该做的是用catch (SQLException e)
替换该行。通常,单击伴随警告的黄色图标会让您选择让编辑为您做这件事。
我想从你的代码有来自try
子句仅一个检查的异常抛出,这是SQLException
,但如果有不止一个人不止一个,可以使用多catch来处理所有possiblities代码相同:
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
}
非常感谢您的洞察力先生。 – missNobody
如何禁止此警告? – saidfagan
这取决于你的IDE。在NetBeans中,您可以转至工具 - >选项 - >编辑器 - >提示 - > JDK迁移支持,在那里您可以取消“使用特定的catch” –
首先,黄线是不是一个错误。
异常类是父类的所有子的(子)的异常类其是IOException异常,ClassNotFoundException的VS的..
try{
...
}catch(Exception e){
}
此catch块捕获所有的子类的异常,包括IOException异常,ClassNotFoundException的VS的。例如如果你的try块抛出一个SQLException,catch块会捕获这个异常。或者,如果您的try块引发FileNotFoundException,则catch块也会捕获此异常。那就是你的catch块不是专门用于特殊例外的。
try{
...
}catch(FileNotFoundException e){
}
至于这个catch块只捕获FileNotFoundException异常。
netbeans中的黄线解释说您可以专门化您的catch块以获得特别的例外。
发布文字;代码是文本。不要让人们看图像。无论如何,立即捕捉所有异常通常被认为是不好的做法。这不是一个错误,只是一个坏主意。 –
你可以在帖子中添加代码,而不是像img? – Bob
对不起,关于图片,我现在编辑它,代码已发布。 – missNobody