Java-uitzonderingen - Probeer...Catch
Java-uitzonderingen
Bij het uitvoeren van Java-code kunnen verschillende fouten optreden: codeerfouten gemaakt door de programmeur, fouten door verkeerde invoer of andere onvoorziene dingen.
Wanneer er een fout optreedt, zal Java normaal gesproken stoppen en een foutmelding genereren. De technische term hiervoor is: Java zal een exception genereren (een error weggooien).
Java proberen en vangen
Met de try
instructie kunt u een codeblok definiëren dat moet worden getest op fouten terwijl het wordt uitgevoerd.
Met de catch
instructie kunt u een codeblok definiëren dat moet worden uitgevoerd als er een fout optreedt in het try-blok.
De try
en catch
trefwoorden komen in paren:
Syntaxis
try {
// Block of code to try
}
catch(Exception e) {
// Block of code to handle errors
}
Beschouw het volgende voorbeeld:
Dit genereert een foutmelding, omdat myNumbers[10] niet bestaat.
public class Main {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
De uitvoer zal ongeveer als volgt zijn:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Main.main(Main.java:4)
Als er een fout optreedt, kunnen we gebruiken try...catch
om de fout op te vangen en wat code uit te voeren om het af te handelen:
Voorbeeld
public class Main {
public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
De uitvoer zal zijn:
Something went wrong.
Eindelijk
Met de finally
instructie kunt u code uitvoeren na try...catch
, ongeacht het resultaat:
Voorbeeld
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
De uitvoer zal zijn:
Something went wrong.
The 'try catch' is finished.
Het worp trefwoord
Met de throw
instructie kunt u een aangepaste fout maken.
De throw
instructie wordt gebruikt in combinatie met een uitzonderingstype . Er zijn veel soorten uitzonderingen beschikbaar in Java: ArithmeticException
,
FileNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
, etc:
Voorbeeld
Geef een uitzondering als de leeftijd onder de 18 is (print "Toegang geweigerd"). Als de leeftijd 18 jaar of ouder is, druk dan "Toegang verleend" af:
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
}
else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15); // Set age to 15 (which is below 18...)
}
}
De uitvoer zal zijn:
Exception in thread "main" java.lang.ArithmeticException: Access denied - You must be at least 18 years old.
at Main.checkAge(Main.java:4)
at Main.main(Main.java:12)
Als de leeftijd 20 was, zou u geen uitzondering krijgen:
Voorbeeld
checkAge(20);
De uitvoer zal zijn:
Access granted - You are old enough!