У меня были некоторые трудности с заголовком, я не знал, как его точнее произнести.
У меня возникла эта проблема, у меня есть несколько методов, которые запрашивают у пользователя 3 Double
ввод,Для каждого ввода он проверяет, является ли он действительным (например, является ли оно положительным значением), а если нет, выдает IllegalArgumentException
.Теперь я создал класс Tester для проверки правильности работы методов.Предполагается перехватить исключение, вызванное методами, и повторно запросить у пользователя ввод, вызвавший это конкретное исключение.
Все 3 метода throw и 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
}
Я знаю, что это не самый правильный способ сделать это.