Datatyper och undantag i Java
Jim White
Java Developer
Error är ett allvarligt 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)
| Kontrollerat undantag | Körtidsundantag ("okontrollerat") | |
|---|---|---|
| Kräver hantering | Ja | Nej |
| Allmän orsak | Saker utanför vår kontroll | Våra programmeringsmisstag |
| Återhämtning | Ofta möjlig om förväntad | Vanligtvis omöjlig |
| Återhämtningsmekanism | try/catch eller throws | Bäst att koda noggrant för att undvika dem |
| Exempelundantag | Filen hittades inte | Arrayindex utanför gräns |
Exception som inte också är underklasser till RuntimeException är kontrollerade undantagFileNotFoundException)RuntimeException är superklass för alla okontrollerade undantagIndexOutOfBoundsException)ArithmeticException)| Underklass till RuntimeException | Beskrivning av när det kastas |
|---|---|
| ArithmeticException | Felaktig aritmetik, t.ex. division med 0 |
| IndexOutOfBoundsException | Index för array, String m.m. är utanför giltigt område |
| NegativeArraySizeException | Försök att skapa en array med negativ storlek |
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
Datatyper och undantag i Java