Вопрос по отлову исключений в Java? - PullRequest
2 голосов
/ 11 мая 2011

У меня есть следующий код:

public static void main(String[] args) {
        try {
           int d1 = 3;
           int d2 = 0;
           int d = d1/d2;
        } catch (Exception ex) {
            System.out.println("Exception");
        } 
    }

Когда этот код выполняется, очевидно, что произойдет исключение.Однако, если я изменю код следующим образом:

public static void main(String[] args) {
        try {
           double d1 = 3;
           double d2 = 0;
           double d = d1/d2;
        } catch (Exception ex) {
            System.out.println("Exception");
        } 
    }

, то исключение не выдает.Я действительно не понимаю.Кто-нибудь может уточнить, пожалуйста?

Ответы [ 4 ]

8 голосов
/ 11 мая 2011

Поскольку деление двойного значения на 0,0 приведет к получению NAN или +/- бесконечности, не исключение.

2 голосов
/ 11 мая 2011

Во втором примере исключение не возникает, поскольку тип данных double имеет специальные значения для положительной и отрицательной бесконечности.

деление 3d на 0d приведет к специальному значению Double.POSITIVE_INFINITY.

2 голосов
/ 11 мая 2011

Когда вы выполняете целочисленное деление на 0, вы можете получить исключение, так как для этого нет определенного поведения.

В стандарте IEEE определено поведение для двойного деления.

0 голосов
/ 02 февраля 2016

Вы делите на два вместо значения int. Если вы получили исключение, то вы должны быть разделены на переменную int (0). Если вы делите на число с плавающей запятой, вы получите бесконечное число, а не исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...