java错误处理:如何检查NumberFormatException

java错误处理:如何检查NumberFormatException,java,exception,numberformatexception,Java,Exception,Numberformatexception,我正在学习java,我正在尝试制作一个非常简单的应用程序来进行货币转换。输入汇率、方向(例如:从欧元到美元或反向)和金额。这些数字是有效的非负数 到目前为止,我设法做到了这一点,这样数字就不会是负数;现在我需要抛出一个错误,如果它不是一个数字。 我有以下代码: public void setKoers(double koers) throws NegativeValueException, NumberFormatException{ if (koers >

我正在学习java,我正在尝试制作一个非常简单的应用程序来进行货币转换。输入汇率、方向(例如:从欧元到美元或反向)和金额。这些数字是有效的非负数

到目前为止,我设法做到了这一点,这样数字就不会是负数;现在我需要抛出一个错误,如果它不是一个数字。 我有以下代码:

public void setKoers(double koers) 
            throws NegativeValueException, NumberFormatException{
    if (koers > 0 ) {
            this.koers=koers;
        } else {
            throw new NegativeValueException("negative number");
        }
}
我的主菜看起来像

    try   {
            cal.setKoers( Double.parseDouble(args[0])); 

          } catch(NegativeValueException e) {
             System.out.println(e.getMessage());
          } catch (NumberFormatException e) {
             System.out.println( e.getMessage());
          }
那么我如何检查koers是否是一个数字呢。
我知道我可以将try和catch错误放在代码中,但我认为这与处理错误的位置和方式的逻辑背道而驰:在我的主函数中,我应该捕捉任何

当用户告诉程序接受和处理输入时,您可能会想要验证您的输入。在这部分代码中,您可以通过解析try/catch块中的输入将字符串转换为数字,然后如果遇到异常,通知用户错误,阻止进一步处理,如果存在任何有问题的输入字段,请清除。

您不需要
NumberFormatException
,因为
Double.parseDouble()
会为您处理它。如果它不是一个正确的数字(在本例中是一个
Double
),那么
parseDouble()
方法将为您抛出一个
NumberFormatException

下面是我将如何编写它:(只需去掉
NumberFormatException


我对你的要求感到困惑。parseDouble(args[0])可以引发NumberFormatException。不知道为什么你的setKoers方法有一个throws子句。我可能遗漏了一些东西,但据我所知,Swing从未被提及,也没有一个GUI。@Corbin:你是对的,我错了。谢谢你那双锐利的眼睛。
public void setKoers(double koers) throws NegativeValueException {
    if (koers > 0 ) {
            this.koers=koers;
        } else {
            throw new NegativeValueException("negative number");
        }
}

try{
    cal.setKoers( Double.parseDouble(args[0]));

    } catch(NegativeValueException e) {
        System.out.println(e.getMessage());
    } catch (NumberFormatException e) {
        System.out.println( e.getMessage());
    }