[英]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.