Aucune exception ne se produit lorsque Java double est divisé par zéro

J'étudiais Enum en Java efficace, et j'écrivais un test pour voir si Enum était comme prévu, donc je suis devenu un peu accro.

Enum j'écrivais

public enum Operator {

 // Il y a aussi PLUS.
    DIVIDE("/") {
        double apply(double x, double y) { return x / y; }
    };
    private final String symbol;
    Operator(String symbol) { this.symbol = symbol;}
    @Override public String toString() { return symbol;}
    
        abstract double apply(double x, double y);
}

Créer une classe de test pour cette classe

public class OperatorTest {

    @Rule
    public ExpectedException thrown = ExpectedException.none();
    
    @Test
    public void zeroDivide() {

        thrown.expect(ArithmeticException.class);
       }
}

Test échoué. J'ai écrit un test avec désinvolture en pensant que si je divise par 0, une exception se produira. Même si vous divisez le type double par 0, aucune exception ne se produit.

De cette façon, cela passera.

@Test
public void zeroDivide() {
    assertThat(Operator.DIVIDE.apply(11, 0), is(Double.POSITIVE_INFINITY));
}

Recommended Posts

Aucune exception ne se produit lorsque Java double est divisé par zéro
[java] Lancer une exception
La comparaison Java Integer (==) ne fonctionne pas correctement