Menu
Coddy logo textTech

Der 'finally'-Block

Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 54 von 68.

Manchmal benötigen Sie Code, der unabhängig davon ausgeführt wird, ob eine Ausnahme auftritt oder nicht. Der finally-Block bietet diese Garantie – er enthält Code, der immer nach Abschluss eines try...catch-Blocks ausgeführt wird, was ihn ideal für Bereinigungsoperationen wie das Schließen von Dateien oder Datenbankverbindungen macht.

Der finally-Block wird in allen Szenarien ausgeführt: wenn der try-Block ohne Ausnahmen erfolgreich abgeschlossen wird, wenn eine Ausnahme ausgelöst und abgefangen wird und sogar dann, wenn eine Ausnahme ausgelöst, aber nicht abgefangen wird. Diese Zuverlässigkeit macht ihn unentbehrlich, um sicherzustellen, dass wichtiger Bereinigungscode immer ausgeführt wird.

<?php
try {
    echo "Attempting operation...\n";
    // Code, der eine Ausnahme auslösen könnte
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

Der finally-Block wird ausgeführt, nachdem sowohl der try- als auch der catch-Block abgeschlossen sind, und bietet einen einheitlichen Ort für wichtigen Bereinigungscode. Dies stellt sicher, dass Ihr Skript Ressourcen ordnungsgemäß verarbeitet und einen sauberen Zustand beibehält, unabhängig davon, was während der Ausführung passiert.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

challenge icon

Aufgabe

Einfach

Sie erhalten zwei Eingaben: einen Operationstyp und eine Zahl. Die erste Eingabe ist ein String, der entweder "divide" oder "multiply" sein wird. Die zweite Eingabe ist eine Zahl, die in der Operation verwendet wird.

Lesen Sie beide Eingaben ein und erstellen Sie einen try...catch...finally-Block. Überprüfen Sie innerhalb des try-Blocks den Operationstyp:

  • Wenn die Operation "divide" ist, prüfen Sie, ob die Zahl Null ist. Wenn sie Null ist, werfen Sie eine neue Exception mit der Nachricht "Cannot divide by zero". Wenn die Zahl nicht Null ist, berechnen Sie 100 geteilt durch die Zahl und geben Sie "Result: " gefolgt vom Ergebnis aus.
  • Wenn die Operation "multiply" ist, berechnen Sie 100 multipliziert mit der Zahl und geben Sie "Result: " gefolgt vom Ergebnis aus.

Behandeln Sie im catch-Block jede Exception, indem Sie "Error: " gefolgt von der Exception-Nachricht unter Verwendung der getMessage()-Methode ausgeben.

Geben Sie im finally-Block "Operation completed" aus.

Eingabeformat:

  • Erste Zeile: Ein String für den Operationstyp (entweder divide oder multiply)
  • Zweite Zeile: Eine Zahl (Beispiel: 5 oder 0 oder 2.5)

Erwartete Ausgabe:

  • Wenn die Operation erfolgreich ist: Result: gefolgt vom berechneten Wert, dann Operation completed in einer neuen Zeile
  • Wenn eine Division durch Null auftritt: Error: Cannot divide by zero, dann Operation completed in einer neuen Zeile

Spickzettel

Der finally-Block enthält Code, der immer nach Abschluss eines try...catch-Blocks ausgeführt wird, unabhängig davon, ob eine Ausnahme aufgetreten ist. Er eignet sich hervorragend für Bereinigungsoperationen wie das Schließen von Dateien oder Datenbankverbindungen.

Der finally-Block wird in allen Szenarien ausgeführt:

  • Wenn der try-Block ohne Ausnahmen erfolgreich abgeschlossen wird
  • Wenn eine Ausnahme ausgelöst und abgefangen wird
  • Wenn eine Ausnahme ausgelöst, aber nicht abgefangen wird
<?php
try {
    echo "Attempting operation...\n";
    // Code that might throw an exception
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
} finally {
    echo "Cleanup completed.\n";
}
?>

Der finally-Block wird ausgeführt, nachdem sowohl der try- als auch der catch-Block beendet wurden, wodurch sichergestellt wird, dass essenzieller Bereinigungscode immer ausgeführt wird.

Probier es selbst

<?php
// Eingaben lesen
$operation = trim(fgets(STDIN));
$number = floatval(fgets(STDIN));

// TODO: Schreibe deinen Code unten
// Erstelle einen try...catch...finally-Block, um die Operation zu verarbeiten

?>
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf