Вывод сообщения об ошибке исключения на консоль

#java

#java

Вопрос:

Я изо всех сил пытаюсь вывести сообщение об ошибке на консоль при вызове метода GetCurrent() в моем методе print(). Кроме того, в моем методе GetCurrent() компилятор говорит, что мне нужно вернуть double . Я не понимаю проблему двойного возврата, не должен ли блок try catch обернуться вокруг вызова GetCurrent() .

Метод GetCurrent:

     public double getCurrent() throws IllegalStateException{
    //check if element
    try{
        if(isCurrent() == true){
            return data[cursor];
        }else{
            throw new IllegalStateException
            ("No Element");
        }//end check        
    }//end try
    catch(IllegalStateException e){
        //print error message to console
        System.out.println(e.getMessage());
    }//end catch        
}//end method
 

Метод IsCurrent():

     public boolean isCurrent(){
    if(cursor < manyItems){
        return true;
    }else{
    return false;
    }
}//end method
 

метод print():

     public void print(){
    double answer;
    System.out.println(" Capacity = "   data.length);
    System.out.println(" Length = "   manyItems);
    System.out.println(" Current Element = "   getCurrent());
    System.out.print("Elements: ");
    for(int i = 0; i < manyItems; i  ){
        answer = data[i];
        System.out.print(answer   " ");
    }//end loop
    System.out.println(" ");
}//end method
 

основной метод (не может быть скорректирован):

   DoubleArraySeq x = new DoubleArraySeq();
  System.out.println("sequence x is empty");
  x.print();
  System.out.println("Trying to get anything from x causes an exceptionn");
  System.out.printf("%5.2f", x.getCurrent());
 

Правильный вывод:

последовательность x пуста

вместимость = 10

длина = 0

Нет Элемента

элементы:

Попытка получить что-либо от x вызывает исключение

Ответ №1:

 public double getCurrent() throws IllegalStateException{
    //check if element
    try{
        if(isCurrent() == true){
            return data[cursor];
        }else{
            throw new IllegalStateException("No Element");
        }//end check        
    }//end try
    catch(IllegalStateException e){
        //print error message to console
        System.out.println(e.getMessage());
    }//end catch        
}//end method
 

Ты ловишь свой собственный throws IllegalStateException . удалите свой try{}catch(){}

 public double getCurrent() throws IllegalStateException{
    //check if element
    if(isCurrent() == true){
        return data[cursor];
    }else{
        throw new IllegalStateException("No Element");
    }//end check      
}//end method
 

основные:

 try{

    DoubleArraySeq x = new DoubleArraySeq();
    System.out.println("sequence x is empty");
    x.print();
    System.out.println("Trying to get anything from x causes an exceptionn");
    System.out.printf("%5.2f", x.getCurrent());
}catch(IllegalStateException e){
    System.err.println("This exception produce because there is no element");
}
 

Комментарии:

1. Теперь я получаю сообщение об ошибке от Java: Exception в потоке «main» java.lang. Исключение IllegalStateException: нет элемента в DoubleArraySeq.GetCurrent(DoubleArraySeq.java:144) в DoubleArraySeq.print(DoubleArraySeq.java:202) в DoubleArraySeqDemonstration.main(DoubleArraySeqDemonstration.java:48) Вместо сообщения об ошибке «нет элемента», выводимого на консоль.

2. Это правильно. Вам нужно попробовать{}catch(){} сейчас в основном или при вызове getCurrent() , я добавлю его в свой ответ

3. Я переместил ваш try{}catch(){} в метод печати, поскольку я не могу настроить main. Я также переключил .err на .out, и он работает, за исключением одной проблемы. Поскольку я не могу настроить основной код, x.GetCurrent() выдает ошибку Java, о которой я упоминал в моем предыдущем ответе. Я предполагаю, что единственный способ решить проблему — это что-то в методе GetCurrent(). В недоумении, как это решить.

4. Я действительно не понимаю, что вы пытаетесь сделать. Но каждый раз, когда вы вызываете getCurrent() , вы должны помещать его в try catch, чтобы Java не выводила исключение.

5. Если основной метод не улавливает исключение, и вы не можете изменить основной метод, а основной метод вызывает метод, который генерирует исключение: вы ничего не можете сделать. Java завершит работу и выведет не перехваченное исключение на консоль.