CodeGym /Kurse /Frontend SELF DE /Exception Handling

Exception Handling

Frontend SELF DE
Level 36 , Lektion 4
Verfügbar

10.1 Der try...catch-Block

Exception Handling ist ein wichtiger Aspekt der Programmierung, der hilft, die Robustheit und Zuverlässigkeit des Codes zu verbessern. In JavaScript werden Schlüsselwörter wie try, catch, finally und throw verwendet, um Ausnahmen zu behandeln. In der Vorlesung werden wir uns diese Schlüsselwörter, ihren Syntax und Anwendungsbeispiele ansehen.

1. Der try...catch-Block

Die try...catch-Konstruktion wird verwendet, um Fehler zu behandeln, die im try-Block auftreten können. Wenn ein Fehler im try-Block auftritt, wird die Steuerung an den catch-Block übergeben, wo der Fehler behandelt werden kann.

Syntax:

    
      try {
        // Code, der eine Ausnahme verursachen kann
      } catch (error) {
        // Code zur Behandlung der Ausnahme
      }
    
  

In diesem Beispiel, obwohl eine Division durch Null in JavaScript keinen Fehler verursacht, wenn es ein anderer Fehler wäre (zum Beispiel Zugriff auf eine undefinierte Variable), würde der catch-Block ihn behandeln:

JavaScript
    
      try {
        let result = 10 / 0;

        console.log(result);

      } catch (error) {
        console.error('An error occurred:', error);
      }
    
  

10.2. Der finally-Block

Der finally-Block wird verwendet, um Code auszuführen, der unabhängig davon ausgeführt werden sollte, ob eine Ausnahme im try-Block aufgetreten ist oder nicht. Der finally-Block folgt dem catch-Block.

Syntax:

    
      try {
        // Code, der eine Ausnahme verursachen kann
      } catch (error) {
        // Code zur Behandlung der Ausnahme
      } finally {
        // Code, der in jedem Fall ausgeführt wird
      }
    
  

In diesem Beispiel wird die Nachricht This will always execute. unabhängig davon ausgegeben, ob ein Fehler aufgetreten ist oder nicht:

JavaScript
    
      try {
        let result = 10 / 0;
        console.log(result);
      } catch (error) {
        console.error('An error occurred:', error);
      } finally {
        console.log('This will always execute.');
      }
    
  

10. 3. Der throw-Operator

Der throw Operator wird verwendet, um Ausnahmen explizit auszulösen. Er kann verwendet werden, um benutzerdefinierte Fehler auszulösen.

Syntax:

    
      throw expression;
    
  

Wo:

  • expression: ein beliebiger Ausdruck oder ein Objekt, das als Ausnahme ausgelöst wird

Beispiel zur Verwendung

In diesem Beispiel wird ein Fehler ausgelöst, wenn versucht wird, durch Null zu teilen, und der catch-Block behandelt diesen Fehler:

JavaScript
    
      function divide(a, b) {
        if (b === 0) {
          throw new Error('Division by zero is not allowed.');
        }
        return a / b;
      }

      try {
        let result = divide(10, 0);
        console.log(result);
      } catch (error) {
        console.error('An error occurred:', error.message);
      }
    
  

10.4 Erweiterte Beispiele und Verwendung

Beispiel 1: Mehrfache Ausnahmen

Manchmal können verschiedene Arten von Fehlern im try-Block auftreten. Sie können sie unterschiedlich behandeln, indem Sie Eigenschaften des Fehlerobjekts verwenden.

In diesem Beispiel behandeln wir einen Syntaxfehler im JSON separat von anderen möglichen Fehlern:

JavaScript
    
      try {
        JSON.parse('{ malformed JSON string }');
      } catch (error) {
        if (error instanceof SyntaxError) {
          console.error('JSON Syntax Error:', error.message);
        } else {
          console.error('Unexpected Error:', error);
        }
      } finally {
        console.log('Parsing attempt finished.');
      }
    
  

Beispiel 2: Verschachtelte try...catch-Blöcke

Es können verschachtelte try...catch-Blöcke verwendet werden, um Fehler differenzierter zu behandeln.

In diesem Beispiel wird ein Fehler, der im ersten try-Block auftritt, vom inneren catch-Block behandelt, der den Fehler dann erneut für den äußeren catch-Block auslöst:

JavaScript
    
      try {
        try {
          let result = divide(10, 0);
          console.log(result);
        } catch (innerError) {
          console.error('Inner catch:', innerError.message);
          throw innerError;
        }
      } catch (outerError) {
        console.error('Outer catch:', outerError.message);
      } finally {
        console.log('Nested try...catch finished.');
      }

      function divide(a, b) {
        if (b === 0) {
          throw new Error('Division by zero is not allowed.');
        }
        return a / b;
      }
    
  

Beispiel 3: Verwendung von finally zum Freigeben von Ressourcen

Der finally-Block ist nützlich für das Freigeben von Ressourcen, wie das Schließen von Dateien oder das Beenden von Netzwerkverbindungen.

In diesem Beispiel wird die Datei immer geschlossen, unabhängig davon, ob beim Lesen ein Fehler aufgetreten ist oder nicht:

JavaScript
    
      function readFile(filePath) {
        let file;
        try {
          file = openFile(filePath); // Funktion, die die Datei öffnet
          // Arbeiten mit der Datei
        } catch (error) {
          console.error('Error reading file:', error.message);
        } finally {
          if (file) {
            closeFile(file); // Funktion, die die Datei schließt
          }
          console.log('File processing finished.');
        }
      }

      function openFile(path) {
        // Logik zum Öffnen der Datei
      }

      function closeFile(file) {
        // Logik zum Schließen der Datei
      }

      readFile('path/to/file.txt');
    
  

Exception Handling in JavaScript mit try, catch, finally und throw ermöglicht es, robustere und beständigere Anwendungen zu erstellen. Das Verstehen und die korrekte Verwendung dieser Konstruktionen hilft, Fehler effektiv zu verwalten, Ressourcen freizugeben und das Benutzererlebnis zu verbessern.

1
Umfrage/Quiz
Objekte, Level 36, Lektion 4
Nicht verfügbar
Objekte
Objekte
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION