Kurs Java Podstawy - rozszerzony

ArithmeticException

ArithmeticException jest wyjątkiem z grupy wyjątków niekontrolowanych (dziedziczących po RuntimeException) i występuje najczęściej w sytuacji, gdy próbujemy wykonać niedozwoloną operację matematyczną.

Wyjątek znajduje się w pakiecie java.lang więc pełna ścieżka do klasy to java.lang.ArithmeticException.

arithmeticexception hierarchy

Najpopularniejszą sytuacją, kiedy wyjątek ten jest generowany jest próba dzielenia całkowitoliczbowego przez 0.

Przykład

package pl.javastart.exception.arithmeticexception;

public class ArithmeticExceptionExample {

	public static void main(String[] args) {
		int x = 10;
		int y = 0;
		int divide = x / y;
		System.out.println(divide);
	}

}

Przy próbie uruchomienia w 8 wierszu zostanie rzucony wyjątek Exception in thread "main" java.lang.ArithmeticException: / by zero.

Co ciekawe w sytuacji dzielenia liczb zmiennoprzecinkowych przy dzieleniu przez 0 (a właściwie 0.0) wyjątek nie jest generowany, zamiast tego otrzymujemy wartość Infinity.

Najprostszym sposobem poradzenia sobie z wyjątkiem jest jego obsługa w bloku try catch:

package pl.javastart.exception.arithmeticexception;

public class ArithmeticExceptionExample {

	public static void main(String[] args) {
		int x = 10;
		int y = 0;
		try {
			int divide = x / y;
			System.out.println(divide);
		} catch(ArithmeticException e) {
			System.err.println("You can't divide by 0");
		}
	}

}

exception console

Przykłady na Github

Komentarze