java.lang.ArithmeticException: / by zero
이 에러는 정수를 0으로 나눴을 때 발생하는 오류이다.
하지만 흥미로운 점이 있다.
int a = 10;
System.out.println(a / 0);
이를 실행할 경우 JVM은 위의 "/ by zero" 예외를 반환하지만
double a = 10;
System.out.println(a / 0);
int a = 10;
System.out.println(a / 0.0);
이 두 경우는 JVM이 Infinity를 반환하게 된다. 따라서 try-catch 문으로 캐치할 수 없다!
이렇게 int 형에서는 예외를 발생하던 코드가 double형 (float 형에서도 동일함)에서는 Inifinity를 반환하는 이유는 Java가 부동 소수점 데이터를 저장하는 방식 때문이다.
이를 방지하기 위해서는 Double.isInfinite() 함수나 Double.isNaN() 함수를 이용해야한다.
'언어 > Java' 카테고리의 다른 글
잘못된 값을 입력하면 예외를 발생시키고 입력 다시 받기 (0) | 2023.11.07 |
---|---|
record에서 배열 사용하지 않기 (0) | 2023.08.28 |
클래스 내의 모든 변수 이름, 값 가져오기 (0) | 2022.06.18 |
언박싱 메소드 (0) | 2022.06.18 |