有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

joptionpane的java尝试捕获错误

netbeans在异常e中表示未使用变量e。我似乎不明白这个问题

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    DecimalFormat z = new DecimalFormat("0.00");
    double x = Double.parseDouble(fnum.getText());     
    double y = Double.parseDouble(secondnum.getText());

    try {
        double f = x + y;
        String number = z.format(f);
        answer.setText("" + number);
    } catch(Exception e ) {
        JOptionPane.showMessageDialog(null, "please input a valid number");
    }
}

共 (2) 个答案

  1. # 1 楼答案

    这是真的-没有使用变量e。 要解决此问题(实际上是警告),您可以打印此异常

    例如:

    catch(Exception e){
    System.out.println(e);
    JOptionPane.showMessageDialog(null, "please input a valid number");}
    
  2. # 2 楼答案

    警告(可以忽略)告诉您在catch块中声明的变量e未被使用。我知道使用IntelliJ IDEA,您可以通过将e的名称更改为ignored来删除警告。我不确定NetBeans是否有类似的功能

    然而,您的try块是毫无意义的。它应该围绕着你的Double.parseDouble()调用,因为如果用户的输入不是可以解释为数字的东西,那么这些调用就会失败。try块中唯一可能引发异常的方法是z.format(f),并且只有在z将其舍入模式设置为RoundingMode.UNNECESSARY时,默认情况下它不是这样

    试试这样的

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        DecimalFormat z = new DecimalFormat("0.00");
        try  {
          double x = Double.parseDouble(fnum.getText());     
          double y = Double.parseDouble(secondnum.getText());
          double f = x + y;
          String number = z.format(f);
          answer.setText("" + number);
        } catch(NumberFormatException e) {
          JOptionPane.showMessageDialog(null, "please input a valid number");
        }
    }
    

    编辑:正如OP评论中指出的,通常不建议捕获异常,因此更新以捕获更具体的NumberFormatException