Datové typy a výjimky v Javě
Jim White
Java Developer
Error označuje závažný problémimport 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)
| Kontrolovaná výjimka | Běhová („nekontrolovaná") výjimka | |
|---|---|---|
| Vyžaduje zpracování | Ano | Ne |
| Obecná příčina | Okolnosti mimo naši kontrolu | Naše programátorské chyby |
| Zotavení | Obvykle možné, pokud je výjimka očekávaná | Obvykle nelze |
| Mechanismus zotavení | try/catch nebo throws | Nejlepší je psát kód pečlivě |
| Příklad výjimky | Soubor nenalezen | Index pole mimo hranice |
Exception, které nejsou zároveň podtřídami RuntimeException, jsou kontrolované výjimkyFileNotFoundException)RuntimeException je nadtřída všech nekontrolovaných výjimekIndexOutOfBoundsException)ArithmeticException)| Podtřída RuntimeException | Popis situace, kdy je vyvolána |
|---|---|
| ArithmeticException | Neplatná aritmetická operace, např. dělení nulou |
| IndexOutOfBoundsException | Index pole, řetězce apod. je mimo povolený rozsah |
| NegativeArraySizeException | Pokus o vytvoření pole se zápornou velikostí |
int y = 5/0; // ArithmeticException causing code
int[] list = new int[-1]; //NegativeArraySizeException causing code
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
Datové typy a výjimky v Javě