Gegevenstypen en uitzonderingen in Java
Jim White
Java Developer
Error is een ernstig probleemimport 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 | |
|---|---|---|
| Afhandelen vereist | Ja | Nee |
| Algemene oorzaak | Buiten onze controle | Onze programmeerfouten |
| Herstel | Meestal mogelijk als voorzien | Vaak niet te herstellen |
| Herstelmechanisme | try/catch of throws | Beter voorkomen door goed te coderen |
| Voorbeeld | Bestand niet gevonden | Array-index buiten bereik |
Exception-subklassen die geen RuntimeException-subklassen zijn, zijn checked exceptionsFileNotFoundException)RuntimeException is de superklasse van alle unchecked exceptionsIndexOutOfBoundsException)ArithmeticException)| RuntimeException-subklasse | Wanneer gegooid |
|---|---|
| ArithmeticException | Foute rekensom, zoals delen door 0 |
| IndexOutOfBoundsException | Index op array, String, enz. buiten bereik |
| NegativeArraySizeException | Array met negatieve grootte aanmaken |
int y = 5/0; // ArithmeticException-veroorzakende code
int[] list = new int[-1]; // NegativeArraySizeException-veroorzakende 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
Gegevenstypen en uitzonderingen in Java