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 Exception Handling Beheersen: Try-Catch, Finally en Klasshiërarchie Uitgelegd

Wat Is Een Exception in Java?

Exception in Java is een gebeurtenis die de uitvoering van programmainstructies onderbreekt, wat de normale controlestroom verstoort. Het is een object dat foutinformatie inkapselt die ontstaat binnen een methode en doorgegeven wordt aan het runtime-systeem. In Java signaleren exceptions voornamelijk verschillende foutcondities die niet door standaard controlestroom afgehandeld kunnen worden.

In deze tutorial leer je:

  • Wat een exception is
  • Waarom exceptions belangrijk zijn
  • Hoe ze effectief af te handelen
  • Het try-catch construct
  • Java's exception klassehiërarchie
  • De rol van de finally blok

Fouten in Java vallen in twee brede categorieën:

  1. Compileer-tijd fouten
  2. Runtime fouten

Compileer-tijd fouten kunnen verder verdeeld worden in:

  • Syntax fouten
  • Semantische fouten

Syntax fout voorbeeld:

Het declareren van int a; is correct, maar in a; schrijven zal de compiler een fout laten rapporteren.

Bijvoorbeeld, int a; eenmaal declareren en later in dezelfde scope proberen int a; opnieuw te declareren zal een compiler fout triggeren, wat gehighlight wordt tijdens de build.

Runtime fout voorbeeld

Runtime fouten manifesteren zich als exceptions, gebeurtenissen die de normale uitvoeringstroom onderbreken. Typische voorbeelden zijn ArithmeticException, NullPointerException en deling door nul.

Deze exceptions ontstaan uit condities buiten de directe controle van de ontwikkelaar.

Java Exception Handling Beheersen: Try-Catch, Finally en Klasshiërarchie Uitgelegd

Waarom Hebben We Exception Handling Nodig?

Beschouw een programma dat toegang heeft tot een externe server. Tijdens ontwikkeling is de server bereikbaar, en de code draait soepel. In productie kan de server down zijn, wat een exception veroorzaakt wanneer het probeert te verbinden.

Java Exception Handling Beheersen: Try-Catch, Finally en Klasshiërarchie Uitgelegd

Uitgaan van de natuurlijke stroom van de code is onvoldoende. Robuuste programma's anticiperen uitzonderlijke condities en herstellen graceful.

Hoe Exceptions Af Te Handelen

Exception handling is de praktijk van het anticiperen op uitzonderlijke condities en het bieden van fallback logica. Een veelvoorkomende strategie is een primaire operatie te proberen en bij falen door te schakelen naar een backup.

Java Exception Handling Beheersen: Try-Catch, Finally en Klasshiërarchie Uitgelegd

Het gebruik van traditionele if-else constructen om meerdere exception types af te handelen wordt snel onhandelbaar:

class Connect {
    if (serverIsUp()) {
        // verbind met primaire server
    } else {
        // verbind met backup server
    }
}

Het Try-Catch Blok

Java biedt ingebouwde mechanismen voor exception handling. Code die een exception kan throwen wordt in een try blok geplaatst, en bijbehorende herstelcode in een of meer catch blokken.

Java Exception Handling Beheersen: Try-Catch, Finally en Klasshiërarchie Uitgelegd

Bijvoorbeeld, het try blok kan proberen te verbinden met de primaire server, terwijl het catch blok de fallback logica afhandelt.

Wanneer de server up is, wordt het catch blok overgeslagen; wanneer de server down is, wordt een exception gegooid, en voert het catch blok uit.

Java Exception Handling Beheersen: Try-Catch, Finally en Klasshiërarchie Uitgelegd

De syntaxis voor een try-catch paar is:

try {
    // statements die kunnen throwen
} catch (ExceptionType naam) {
    // herstel statements
}

Praktisch Voorbeeld

Stap 1: Kopieer de volgende code in je IDE.

class JavaException {
    public static void main(String args[]) {
        int d = 0;
        int n = 20;
        int fraction = n / d; // zal ArithmeticException throwen
        System.out.println("Einde Van Main");
    }
}

Stap 2: Compileer en voer uit. Het programma gooit een ArithmeticException en stopt op regel 5.

Stap 3: Wijzig de code om try-catch te gebruiken:

class JavaException {
    public static void main(String args[]) {
        int d = 0;
        int n = 20;
        try {
            int fraction = n / d;
            System.out.println("Deze regel wordt niet uitgevoerd");
        } catch (ArithmeticException e) {
            System.out.println("Exception gevangen: " + e);
        }
        System.out.println("Einde Van Main");
    }
}

Stap 4: Compileer en voer opnieuw uit. De output toont dat de exception graceful afgehandeld wordt, en het programma doorgaat naar de finale print statement.

Java Exception Handling Beheersen: Try-Catch, Finally en Klasshiërarchie Uitgelegd

Het gevangen ArithmeticException object e bevat gedetailleerde informatie die gebruikt kan worden voor logging of herstel.

Exception Klasse Hiërarchie

Java's exception hiërarchie stamt van de Throwable klasse, die twee directe subklassen heeft: Error en Exception. Error vertegenwoordigt onherstelbare condities (bijv. OutOfMemoryError), terwijl Exception condities dekt die programmatisch afgehandeld kunnen worden.

Java Exception Handling Beheersen: Try-Catch, Finally en Klasshiërarchie Uitgelegd

  • RuntimeException (bijv. NullPointerException, ArithmeticException) – unchecked exceptions die niet tijdens compile-tijd gedetecteerd worden.
  • IOException – problemen die optreden tijdens input/output operaties.
  • InterruptedException – gegooid wanneer een thread onderbroken wordt.

Geneste Try-Catch Voorbeeld

Kopieer de volgende code:

class JavaException {
    public static void main(String args[]) {
        try {
            int d = 1;
            int n = 20;
            int fraction = n / d;
            int g[] = {1};
            g[20] = 100; // ArrayIndexOutOfBoundsException
        } catch (ArithmeticException e) {
            System.out.println("ArithmeticException gevangen: " + e);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("ArrayIndexOutOfBoundsException gevangen: " + e);
        }
        System.out.println("Einde Van Main");
    }
}

Wanneer d 1 is, gooit de code ArrayIndexOutOfBoundsException. d op 0 zetten trigger ArithmeticException. Het uncommenten van een brede catch (Exception e) zou een compilatiefout veroorzaken omdat het specifiere handlers zou overschaduwen.

Het Finally Blok

Het finally blok wordt uitgevoerd ongeacht of een exception optreedt, wat het ideaal maakt voor cleanup taken.

try {
    // riskante operaties
} catch (ExceptionType e) {
    // foutafhandeling
} finally {
    // cleanup acties
}

Voorbeeld:

class JavaException {
    public static void main(String args[]) {
        try {
            int d = 0;
            int n = 20;
            int fraction = n / d;
        } catch (ArithmeticException e) {
            System.out.println("Exception gevangen: " + e);
        } finally {
            System.out.println("Binnen het finally blok");
        }
    }
}

Het uitvoeren van dit programma toont het bericht uit het finally blok zelfs al wordt een exception gegooid. d op 1 zetten elimineert de exception; het finally blok draait nog steeds.

Samenvatting:

  • Een exception is een runtime fout die de normale programmaflow onderbreekt.
  • Fouten zijn verdeeld in compileer-tijd (syntax, semantisch) en runtime (exceptions).
  • Robuuste applicaties moeten alle geanticipeerde exceptions afhandelen om stabiliteit te bewaren.
  • Java's try-catch mechanisme is de standaard manier om fouten af te vangen en te herstellen.
  • Het try blok bevat de code die kan throwen; catch handelt de fout af; finally garandeert cleanup.

Java

  1. C++ Exception Handling: Praktische Try, Catch, Throw Voorbeelden
  2. Python-exception handling: try, except, else en finally uitgelegd
  3. Python Exception Handling Onder de Loep: try, except, finally en raise Effectief Gebruiken
  4. Java Exception Handling meesteren: Try, Catch, Finally, Throw & Throws uitgelegd
  5. Java Exception Handling meesteren: Try, Catch, Finally en Resources
  6. Multi-exception handling in Java meesteren
  7. Java String.charAt() begrijpen: Syntaxis, Retourtype, Exceptions en Praktisch Voorbeeld
  8. Java String.endsWith() beheersen: Controleren op String-suffixen met voorbeelden
  9. Bestanden Lezen in Java met BufferedReader – Een Praktische Gids met Voorbeelden
  10. Insertion Sort algoritme in Java: Duidelijk voorbeeld & stapsgewijze handleiding
  11. Java 9: Verbeterde Try-With-Resources voor schonere code