@atambalasi

Не могу понять почему работает последняя исключения?

public class Test { 
    public static void main(String[] args) { 
        int myInt = 0; 
        float myFloat = 0; 
        try { 
            float result = myFloat / myFloat; 
        } catch (RuntimeException re) { 
            System.out.println("Exception 1"); 
        } 
 
        try { 
            float result = myFloat / myInt; 
        } catch (RuntimeException re) { 
            System.out.println("Exception 2"); 
        } 
 
        try { 
            float result = myInt / myFloat; 
        } catch (RuntimeException re) { 
            System.out.println("Exception 3"); 
        } 
 
        try { 
            float result = myInt / myInt; 
        } catch (RuntimeException re) { 
            System.out.println("Exception 4"); 
        } 
    } 
}

Почему этот код выкидывает Exception 4; Остальные кэтчи почему не работает ?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
Maksclub
@Maksclub
maksfedorov.ru
Числа с плавающей точкой подчиняются стандарту IEEE-754.

Если v > 0 и h == 0, то v/h == INFINITY. Гарантировано, что INFINITY > 0.5.
Если v < 0 и h == 0, то v/h == -INFINITY. Для него -INFINITY < 0.5.
Если v == 0 и h == 0, то v/h == NaN. Для него любое сравнение, ЕМНИП, возвращает false.

INFINITY -- бесконечность, у нее тип double/float

https://en.wikipedia.org/wiki/Division_by_zero#In_...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы