Datentypen und Exceptions in Java
Jim White
Java Developer
Error ist ein schwerwiegendes Problemimport java.util.*;
public class CauseOutOfMemory {
public static void main(String[] args) {
List<Long> numbers = new ArrayList<Long>();
long counter = 0;
while (true) {
numbers.add(counter);
counter++;
}
}
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.base/java.lang.Long.valueOf(Long.java:1204)
at foo/exceptions.CauseOutOfMemory.main(CauseOutOfMemory.java:12)
| Checked Exception | Runtime-("unchecked")-Exception | |
|---|---|---|
| Behandlung erforderlich | Ja | Nein |
| Allgemeine Ursache | Außerhalb unserer Kontrolle | Unsere Programmierfehler |
| Erholung | Bei Erwartung oft möglich | Meist nicht möglich |
| Mechanismus zur Erholung | try/catch oder throws | Sorgfältig coden, um sie zu vermeiden |
| Beispiel | Datei nicht gefunden | Arrayindex außerhalb des Bereichs |
Exception-Unterklassen, die nicht auch Unterklassen von RuntimeException sind, sind checked exceptionsFileNotFoundException)RuntimeException ist die Oberklasse aller unchecked exceptionsIndexOutOfBoundsException)ArithmeticException)| Unterklasse von RuntimeException | Wann wird sie ausgelöst? |
|---|---|
| ArithmeticException | Fehlerhafte Arithmetik wie Division durch 0 |
| IndexOutOfBoundsException | Index für Array, String etc. außerhalb des Bereichs |
| NegativeArraySizeException | Array mit negativer Größe anlegen |
int y = 5/0; // Code, der eine ArithmeticException auslöst
int[] list = new int[-1]; // Code, der eine NegativeArraySizeException auslöst
Exception in thread "main" java.lang.ArithmeticException: / by zero
Exception in thread "main" java.lang.NegativeArraySizeException: -1
public class LoadClass {
public static void main(String[] args) {
Class myClass = Class.forName("com.mysql.Driver");
}
}
LoadClass.java:3: error: unreported exception ClassNotFoundException;
must be caught or declared to be thrown
Class myClass = Class.forName("com.mysql.Driver");
^
1 error
Datentypen und Exceptions in Java