我对标题有一些困难,不知道如何更准确地表达它。
我遇到了这个问题,我有几种方法要求用户输入 3 个Double
输入。对于每个输入,它会检查它是否有效(例如,如果它是一个正值),如果不是,它会抛出一个IllegalArgumentException
. 现在我创建了一个 Tester 类来检查方法是否正常工作。它应该捕获方法抛出的异常并重新询问用户导致该特定异常的输入。
所有 3 种方法都抛出,IllegalArgumentException
但每个方法的错误消息都不同。无论如何(在捕获异常时)查看哪个输入导致错误?这是我的代码示例:
public class account
{
double value;
public account(double initialValue)
{
if (initialValue < 0)
{
throw new IllegalArgumentException("Initial value cannot be negative.");
}
value = initialValue;
}
public add(double addValue)
{
if (addValue < 0)
{
throw new IllegalArgumentException("Added value cannot be negative.");
}
value = value + addValue;
}
}
和测试类将是这样的:
public class accountTester
{
public static void main(String[] args)
{
try
{
double initialValue = Double.parseDouble(JOptionPane.showInputDialog("Enter initial value"));
account acc = new account(initialValue);
double addValue = Double.parseDouble(JOptionPane.showInputDialog("Enter value to add"));
acc.add(addValue);
} catch (Exception e) {
System.out.println("Wrong ammount");
initialValue = Double.parseDouble(JOptionPane.showInputDialog("Re-enter ammount"));
}
}
那么,只有当IllegalArgumentException
“初始值不能为负”时,我才必须在测试器类中进行更改以抛出该代码。
对不起,如果我让这很难理解。
编辑:根据我的教授,我们应该使用 do
String error = e.toString;
if (error.contains("Added value cannot be negative.")
{
//DO CODE FOR FIRST ERROR
}
我知道这不是最合适的方法。