Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在继续代码中的下一项之前,是否有一种方法可以自行解决问题_Java_Swing_Exception - Fatal编程技术网

Java 在继续代码中的下一项之前,是否有一种方法可以自行解决问题

Java 在继续代码中的下一项之前,是否有一种方法可以自行解决问题,java,swing,exception,Java,Swing,Exception,我搜索了这个网站、甲骨文和其他网站都没有结果 我的程序有几个问题,但现在我只想解决一个 首先,让我发布我的程序中有问题的部分 验证方法 private void verifyAge() { String ca = iP.cAge.getText(); try { a = Integer.parseInt(ca); if (a < 0 || a > 120) { JOpt

我搜索了这个网站、甲骨文和其他网站都没有结果

我的程序有几个问题,但现在我只想解决一个

首先,让我发布我的程序中有问题的部分

验证方法

 private void verifyAge()
 {
     String ca = iP.cAge.getText();
     try
     {
         a = Integer.parseInt(ca); 
         if (a < 0 || a > 120)
         {
             JOptionPane.showMessageDialog(null,"Enter number between 0"
                     + " and 120", "Input Error",JOptionPane.ERROR_MESSAGE);
             iP.cAge.setText("");  
         }
     }
     catch(NumberFormatException afe)
     {
         JOptionPane.showMessageDialog(null, "Must Enter Number", "Input"
                 + " Error", JOptionPane.ERROR_MESSAGE);
         iP.cAge.setText("");
     }
} 
private void verifyAge()
{
字符串ca=iP.cAge.getText();
尝试
{
a=整数.parseInt(ca);
如果(a<0 | | a>120)
{
JOptionPane.showMessageDialog(null,“输入0之间的数字”
+“和120”,“输入错误”,作业窗格。错误消息);
iP.cAge.setText(“”);
}
}
捕获(数字格式异常afe)
{
JOptionPane.showMessageDialog(空,“必须输入编号”,“输入”
+“错误”,作业窗格。错误消息);
iP.cAge.setText(“”);
}
} 

我有一个文件监听器,这段代码将进入其中。在代码中继续之前,它需要运行并循环,直到错误被修复。有人有什么建议吗?请举例说明。

要做到这一点,你有两个选择:

  • 从validate方法返回一个值,然后在acitonproxed中检查该值。如果已验证,则只移动到下一个方法。您可以通过放置几个if/else语句来实现这一点

  • 或者您可以创建验证异常类。如果您的验证方法无法验证,那么它应该抛出一个异常,您可以在执行的操作中捕获该异常。如果将所有的validate方法放在try块中,那么如果某个方法抛出异常,那么在到达catch块时可以跳过其他方法


  • 我不确定我是否正确理解了你的第二个问题。据我所知,即使addFile方法引发异常,您也希望继续该程序。对于这种情况,您需要将addFile方法调用包装在一个单独的try-catch中。如果程序在逻辑上可以继续执行addfile失败,则不需要从异常情况下执行的操作返回。只需在catch中记录addFile失败的错误,并在catch语句之后继续执行其余代码。

    实现此目的有两种选择:

  • 从validate方法返回一个值,然后在acitonproxed中检查该值。如果已验证,则只移动到下一个方法。您可以通过放置几个if/else语句来实现这一点

  • 或者您可以创建验证异常类。如果您的验证方法无法验证,那么它应该抛出一个异常,您可以在执行的操作中捕获该异常。如果将所有的validate方法放在try块中,那么如果某个方法抛出异常,那么在到达catch块时可以跳过其他方法


  • 我不确定我是否正确理解了你的第二个问题。据我所知,即使addFile方法引发异常,您也希望继续该程序。对于这种情况,您需要将addFile方法调用包装在一个单独的try-catch中。如果程序在逻辑上可以继续执行addfile失败,则不需要从异常情况下执行的操作返回。只需在catch中记录addFile失败的错误,并在catch语句之后继续执行其余代码。

    首先,创建一个新的
    异常
    ,称为类似
    验证异常
    。让每个方法都抛出这个。您现在需要在
    ActionListener
    中捕获它。这样,当一个方法失败时,就可以停止所有其他方法的执行

    其次,您需要某种方法来突出显示或聚焦失败的字段

    您可以使用
    组件
    (例如)
    invalidField
    。如果这不是
    null
    (在
    actionPerformed
    方法中),您可以调用
    requestFocusInWindow
    将焦点控制返回到该字段


    每个验证方法在抛出其
    ValidationException

    之前都需要设置此项。首先,创建一个名为
    ValidationException
    的新
    异常。让每个方法都抛出这个。您现在需要在
    ActionListener
    中捕获它。这样,当一个方法失败时,就可以停止所有其他方法的执行

    其次,您需要某种方法来突出显示或聚焦失败的字段

    您可以使用
    组件
    (例如)
    invalidField
    。如果这不是
    null
    (在
    actionPerformed
    方法中),您可以调用
    requestFocusInWindow
    将焦点控制返回到该字段


    每个验证方法在抛出其
    ValidationException

    @Juned Ahsan之前都需要设置此值。有人能给我一些示例,说明返回值是什么,以及if/else语句是什么样子的吗?或者是验证类的一个例子。@AmyMorin boolean可能是一个不错的选择。试试这个:私有布尔校验页(){String ca=iP.cAge.getText();布尔返回值=true;试试{a=Integer.parseInt(ca);if(a<0 | | a>120){JOptionPane.showMessageDialog(null,“输入介于0“+”和120之间的数字”,“输入错误”,JOptionPane.Error\u消息);iP.cAge.setText(“”);returnValue=false;}catch(NumberFormatException afe){JOptionPane.showMessageDialog(null,“必须输入数字”,“输入“+”错误”,JOptionPane.Error_消息);iP.cAge.setText(“”;returnValue=false;}returnValue;}@JunedAhsan感谢您的帮助。但我最终通过创建InputVerifier类实现了它。@AmyMorin很棒!我很高兴您能实现它。帮助付出努力的人总是令人愉快的:-)@Juned Ahsan有人能给我一些示例,说明返回值是什么以及if/else语句是什么样子的吗?或