ArithmeticException w Javie

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

ArithmeticException to wyjątek czasu wykonywania w Javie, który oznacza błąd arytmetyczny. Najczęściej pojawia się przy próbie dzielenia liczby całkowitej przez zero albo obliczania reszty z dzielenia przez zero.

Komunikat:

Exception in thread "main" java.lang.ArithmeticException: / by zero

oznacza, że program wykonał operację dzielenia lub modulo, w której dzielnik miał wartość 0.

Przykład z dzieleniem

int x = 10;
int y = 0;
int wynik = x / y; // ArithmeticException

Przykład z operatorem modulo

int x = 10;
int y = 0;
int reszta = x % y; // ArithmeticException

Operator % zwraca resztę z dzielenia, więc również wymaga poprawnego dzielnika. Jeśli y == 0, program zgłosi wyjątek.

Jak uniknąć błędu?

Przed dzieleniem lub użyciem modulo należy sprawdzić, czy dzielnik nie jest zerem:

if (y != 0) {
    int reszta = x % y;
} else {
    System.out.println("Nie można dzielić przez zero");
}

Ważne na egzaminie

Jeżeli w treści błędu widzisz ArithmeticException: / by zero, szukaj kodu z operacją:

  • x / y, gdy y może być równe 0,
  • x % y, gdy y może być równe 0.

Nie należy mylić tego z błędem tablicy, np. tablica[6], który może spowodować ArrayIndexOutOfBoundsException, a nie ArithmeticException.