Ett undantag signalerar att något oväntat inträffat under körningen. Med try och catch kan vi hantera vissa undantag och välja hur programmet ska fortsätta. Syntaxfel och andra kompileringsfel måste däremot rättas innan programmet kan köras.
Ett exempel
public class Division {
public static void main(String[] args) {
int divisor = 0;
try {
int result = 13 / divisor;
System.out.println(result);
} catch (ArithmeticException error) {
System.out.println("Heltalsdivision med noll är inte tillåten.");
}
System.out.println("Programmet fortsätter.");
}
}Här kastas ArithmeticException eftersom divisorn är noll. Catch-blocket körs bara om ett undantag av en matchande typ kastas i try-blocket. Flyttalsdivision med noll fungerar annorlunda: resultatet kan bli Infinity eller NaN.
Resurser och finally
finally körs normalt när exekveringen lämnar try/catch, även vid return. Det är ingen garanti vid exempelvis System.exit eller när processen avslutas utifrån. Ett try kan ha finally utan catch. Try-with-resources stänger resurser som implementerar AutoCloseable och kan också användas utan catch.
Fånga specifika undantag som programmet kan hantera. I spelet kan ImageIO ge IOException om en bild inte kan läsas; bildladdaren kontrollerar även att resursen finns och att formatet kan avkodas. Att fånga ett undantag reparerar inte automatiskt orsaken.
Vanliga frågor om Try Catch - Skapa ditt eget spel
Vad handlar Try Catch - Skapa ditt eget spel om?
Hantera undantag i Java med try och catch. Exempel på heltalsdivision med noll och skillnaden mellan kompileringsfel och körningsfel.
Hur övar jag på Try Catch - Skapa ditt eget spel?
Kör exemplen själv, ändra ett värde i taget och jämför sedan resultatet med förklaringen på sidan.