繁体   English   中英

我正在尝试捕获NumberFormatException,但是异常仍在传递

[英]I am trying to catch a NumberFormatException however the exception is still passing

我有以下示例,该示例旨在捕获String current = "d"不是double的事实,它应该显示一条消息。

运行此代码时,由于d ,在编译器中出现NumberFormatException 我相信我犯了一个非常简单的错误,但我看不到它。 有人可以解释我哪里出了问题吗?

public void runAddValidation()
{
    String current = "d";
    double vluRaised = Double.parseDouble(current);

    boolean vTypeDistanceBroke=false;

    try 
    { 
        double vFigure = vluRaised;
        vTypeDistanceBroke=false; 
    }

    catch (NumberFormatException nfe) 
    { 
        vTypeDistanceBroke=true; 
        System.out.println("Type-MoneyRaised: Failed"); 
        JOptionPane.showMessageDialog(null, "Please add a valid value (No Letters)");
    }
}

try-catch插入parseDouble()

public void runAddValidation()
{
    double vluRaised = 0l;
    boolean vTypeDistanceBroke;
    String current = "d";
    double vFigure = vluRaised;

    try 
    { 
        vluRaised = Double.parseDouble(current);

        vTypeDistanceBroke=false; 
    }

    catch (NumberFormatException nfe) 
    { 
        vTypeDistanceBroke=true; 
        System.out.println("Type-MoneyRaised: Failed"); 
        JOptionPane.showMessageDialog(null, "Please add a valid value (No Letters)");
    }
}

如注释中所建议:检查javadoc中的parseDouble()可以在其中读取:

抛出:
NullPointerException-如果字符串为null
NumberFormatException-如果字符串不包含可分析的double。

您的“尝试/捕获”不涵盖异常的来源。 该代码将使它停滞不前。 我还自由解决了代码中的一些编译错误。 您应该拥有的是:

   public void runAddValidation() {
        String current = "d";
        boolean vTypeDistanceBroke=false; 

        try{ 
           //This is where you'll have a problem
          double vluRaised = Double.parseDouble(current);
          double vFigure = vluRaised;

        }

        catch (NumberFormatException nfe){ 
               vTypeDistanceBroke=true; 
               System.out.println("Type-MoneyRaised: Failed"); 
               JOptionPane.showMessageDialog(null, "Please add a valid value(No Letters)");
       } 
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM