Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java throw vs throws: Exception Handling meesteren met praktische voorbeelden

Java throw vs throws: Exception Handling meesteren met praktische voorbeelden

Deze gids legt uit hoe je Java's throw en throws sleutelwoorden gebruikt voor effectieve exception handling, geïllustreerd met real-world code samples.

In Java vallen exceptions in twee categorieën:

  • Unchecked Exceptions – niet geverifieerd tijdens compile-time maar tijdens runtime. Voorbeelden: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, en alle subklassen van Error.
  • Checked Exceptions – afgedwongen door de compiler. Voorbeelden: IOException, InterruptedException, en vele anderen.

Voor een diepere duik, zie Java Exceptions.

Unchecked exceptions signaleren meestal programmeerfouten; ze moeten gecorrigeerd worden in plaats van gevangen. Checked exceptions vertegenwoordigen condities waar aanroepers zich bewust van moeten zijn en moeten afhandelen.


Het throws sleutelwoord gebruiken

Het throws clause declareert dat een methode een of meer exceptions kan gooien, wat de verantwoordelijkheid delegeert aan aanroepers. De syntax is:

accessModifier returnType methodNaam() throws ExceptionType1, ExceptionType2 { /* code */ }

Je kunt meerdere exception typen opnoemen, gescheiden door komma's.


Voorbeeld 1: Een checked exception declareren

import java.io.*; class Main { public static void vindBestand() throws IOException { // Code die IOException kan triggeren File nieuwBestand = new File("test.txt"); FileInputStream stream = new FileInputStream(nieuwBestand); } public static void main(String[] args) { try { vindBestand(); } catch (IOException e) { System.out.println(e); } } }

Uitvoer

java.io.FileNotFoundException: test.txt (Geen dergelijk bestand of map)

Als test.txt ontbreekt, gooit FileInputStream een FileNotFoundException, wat een subklasse is van IOException. Omdat vindBestand() throws IOException declareert, moet de main() methode het afhandelen of propageren.


Meerdere exceptions gooien

Je kunt meerdere exception typen in een enkel throws clause declareren:

import java.io.*; class Main { public static void vindBestand() throws NullPointerException, IOException, InvalidClassException { // Potentieel gooit NullPointerException … // Potentieel gooit IOException … // Potentieel gooit InvalidClassException … } public static void main(String[] args) { try { vindBestand(); } catch (IOException e1) { System.out.println(e1.getMessage()); } catch (InvalidClassException e2) { System.out.println(e2.getMessage()); } } }

Let op dat NullPointerException unchecked is, dus het hoeft niet gevangen of gedeclareerd te worden door de aanroeper.


Wanneer throws vs. try...catch gebruiken

Het inbedden van try...catch in elke methode die een exception kan gooien, kan code vervuilen en logica verduisteren. Het declareren van throws houdt de methode-handtekening schoon en laat hogere-level code beslissen hoe fouten afgehandeld worden.


Het throw sleutelwoord gebruiken

Het throw statement gooit expliciet een exception instantie, wat controle overdraagt aan de dichtstbijzijnde matchende catch blok of het programma termineert als ongehandeld.

Syntax:

throw throwableObject;

Hier is throwableObject een instantie van Throwable of een van zijn subklassen.


Voorbeeld 2: Een unchecked exception gooien

class Main { public static void delenDoorNul() { throw new ArithmeticException("Proberen te delen door 0"); } public static void main(String[] args) { delenDoorNul(); } }

Uitvoer

Exception in thread "main" java.lang.ArithmeticException: Proberen te delen door 0 at Main.delenDoorNul(Main.java:3) at Main.main(Main.java:7) exit status 1

Omdat ArithmeticException unchecked is, is vangen optioneel.


Voorbeeld 3: Een checked exception gooien

import java.io.*; class Main { public static void vindBestand() throws IOException { throw new IOException("Bestand niet gevonden"); } public static void main(String[] args) { try { vindBestand(); System.out.println("Rest van code in try blok"); } catch (IOException e) { System.out.println(e.getMessage()); } } }

Uitvoer

Bestand niet gevonden

Hier gooit vindBestand() een checked IOException, dus aanroepers moeten het afhandelen of declareren. De main() methode demonstreert het vangen van de exception, wat programma-terminatie voorkomt.


Java

  1. Java-variabelen en literals: een uitgebreide gids
  2. Java Input & Output beheersen: printen, lezen en formatteren
  3. Java Expressies, Statements en Blokken begrijpen
  4. Java klassen en objecten: een praktische gids
  5. Java abstracte klassen en methoden: een uitgebreide gids
  6. Java geneste en inner classes meesteren: typen, voorbeelden en best practices
  7. Multi-exception handling in Java meesteren
  8. Java Autoboxing en Unboxing: Praktische voorbeelden en best practices
  9. Java String Vervanging beheersen: replace(), replaceAll() en replaceFirst() uitgelegd
  10. Java String toLowerCase() & toUpperCase(): Tekstcase Converteren met Locale Awareness
  11. Java Onder de Knie: Objects, Classes en Kern OOP Concepten