Eine Exception auslösen
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 55 von 68.
Manchmal müssen Sie signalisieren, dass in Ihrem Code etwas schiefgelaufen ist, und die normale Ausführung stoppen. Das Schlüsselwort throw ermöglicht es Ihnen, manuell eine Ausnahme zu erstellen und auszulösen, wodurch Sie die Kontrolle darüber erhalten, wann und warum Ihr Programm eine Fehlerbedingung behandeln sollte.
Wenn Sie eine Exception auslösen, erstellen Sie ein neues Exception-Objekt und versehen es mit einer beschreibenden Nachricht darüber, was schiefgelaufen ist. Diese Exception wird die aktuelle Code-Ausführung sofort stoppen und nach einem catch-Block suchen, um sie zu behandeln.
<?php
function checkAge($age) {
if ($age < 0) {
throw new Exception("Age cannot be negative");
}
echo "Age is valid: " . $age;
}
try {
checkAge(-5);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>Die throw-Anweisung erfordert die new Exception()-Syntax, bei der Sie eine String-Nachricht übergeben, die das Problem beschreibt. Diese Nachricht kann später mit der getMessage()-Methode in Ihrem catch-Block abgerufen werden, was es einfacher macht, zu verstehen, was schiefgelaufen ist, und angemessen zu reagieren.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachSie erhalten zwei Eingaben: eine Zahl, die einen Preis darstellt, und eine Zahl, die einen Rabattprozentsatz darstellt. Beide Eingaben werden als Zahlen bereitgestellt (der Preis kann eine Dezimalzahl sein und der Rabattprozentsatz ist eine Ganzzahl zwischen 0 und 100).
Lesen Sie beide Eingaben ein und erstellen Sie eine Funktion namens calculateFinalPrice, die zwei Parameter akzeptiert: den Preis und den Rabattprozentsatz. Überprüfen Sie innerhalb dieser Funktion, ob der Rabattprozentsatz größer als 100 oder kleiner als 0 ist. Wenn eine der Bedingungen zutrifft, werfen Sie eine neue Exception mit der Nachricht "Invalid discount percentage". Wenn der Rabatt gültig ist, berechnen Sie den Endpreis nach Anwendung des Rabatts und geben Sie diesen zurück.
Verwenden Sie einen try...catch-Block, um die Funktion mit den bereitgestellten Eingaben aufzurufen. Rufen Sie im try-Block die Funktion auf und geben Sie "Final price: " gefolgt vom berechneten Endpreis aus. Behandeln Sie im catch-Block die Ausnahme, indem Sie "Error: " gefolgt von der Ausnahmenachricht unter Verwendung der Methode getMessage() ausgeben.
Eingabeformat:
- Erste Zeile: Eine Zahl, die den Preis darstellt (Beispiel:
100oder49.99) - Zweite Zeile: Eine Ganzzahl, die den Rabattprozentsatz darstellt (Beispiel:
20oder150)
Erwartete Ausgabe:
- Wenn der Rabatt gültig ist:
Final price:gefolgt vom berechneten Preis nach dem Rabatt - Wenn der Rabatt ungültig ist:
Error: Invalid discount percentage
Spickzettel
Verwenden Sie das throw-Schlüsselwort, um manuell Ausnahmen zu erstellen und auszulösen:
throw new Exception("Error message");Wenn eine Ausnahme ausgelöst wird, stoppt sie die normale Ausführung und sucht nach einem catch-Block, um sie zu behandeln:
<?php
function checkAge($age) {
if ($age < 0) {
throw new Exception("Age cannot be negative");
}
echo "Age is valid: " . $age;
}
try {
checkAge(-5);
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>Verwenden Sie die getMessage()-Methode im catch-Block, um die Ausnahmemeldung abzurufen.
Probier es selbst
<?php
// Eingaben lesen
$price = floatval(fgets(STDIN));
$discountPercentage = intval(fgets(STDIN));
// TODO: Schreiben Sie Ihren Code unten
// Erstellen Sie die Funktion calculateFinalPrice
// Verwenden Sie einen try...catch-Block, um die Funktion aufzurufen und Ausnahmen zu behandeln
// Geben Sie die entsprechende Ausgabe aus
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Funktionen
Anonyme FunktionenClosures und 'use'Arrow FunctionsCallback-FunktionenVerwendung von 'call_user_func'VariablenfunktionenReferenzübergabeRekursive FunktionenRückblick: Funktions-Medley4Mehrdimensionale Arrays
Ein 2D-Array erstellenZugriff auf 2D-Array-ElementeÄndern von 2D-Array-ElementenIterieren mit verschachtelten Schleifen2D assoziative ArraysZusammenfassung: Einfache Gitter-Übung2Fortgeschrittene Array-Manipulationen
Hinzufügen mit 'array_push'Entfernen mit 'array_pop'Hinzufügen mit 'array_unshift'Entfernen mit 'array_shift'Indizierte Arrays zusammenführenAssoziative Arrays zusammenführenExtrahieren mit 'array_slice'Werte mit 'in_array'Schlüssel mit 'array_search'Rückblick: Playlist-Übung5Schüler-Notenbuch
Projekt-Setup: DatenstrukturEinen neuen Schüler hinzufügenEinem Schüler eine Note hinzufügenDurchschnittsnote eines Schülers berechnenDen besten Schüler findenEin Zeugnis erstellen8Fehler- und Ausnahmebehandlung
PHP-Fehler verstehenDer 'try...catch'-BlockDer 'finally'-BlockEine Exception auslösenEine benutzerdefinierte Exception erstellenEine benutzerdefinierte Exception verwendenZusammenfassung: Eingabevalidierung3Arrays sortieren
Indizierte Arrays aufsteigend sortierenIndizierte Arrays absteigend sortierenAssoziative Arrays nach Wert sortierenAssoziative Arrays nach Schlüssel sortierenNatürliche SortierungBenutzerdefiniertes Sortieren mit 'usort'Recap: Leaderboard-Sortierung