In PHP ist der Null -Division -Fehler ein häufiger Laufzeitfehler, insbesondere wenn der Nenner Null ausführt, und das Programm veranlasst eine Warnung oder eine Ausnahme. Um dies zu vermeiden, müssen wir normalerweise den Wert des Divisors im Voraus überprüfen, um sicherzustellen, dass es sich um eine gültige Zahl handelt und nicht Null. PHP liefert die Funktion is_finite () , um zu bestimmen, ob ein Wert ein endlicher Wert ist, der sehr hilfreich ist, um den Fehler mit Null -Division zu fangen.
is_finite () ist eine Funktion in PHP, um festzustellen, ob ein numerischer Wert ein endlicher Wert ist. Geben Sie True zurück, wenn das Argument eine endliche Zahl ist (weder unendlich noch nicht nummerierte Nan), ansonsten false zurückgeben.
<?php
var_dump(is_finite(10)); // bool(true)
var_dump(is_finite(INF)); // bool(false)
var_dump(is_finite(NAN)); // bool(false)
?>
Bei der Durchführung von Abteilungsvorgängen können wir zunächst feststellen, ob der Nenner null oder nicht finanziert ist. Wenn es sich nicht um eine endliche Zahl handelt, vermeiden Sie die Teilung oder geben Sie Standardwerte oder Fehleranforderungen an.
<?php
function safe_divide($numerator, $denominator) {
// Bestimmen Sie, ob der Nenner endlich und nicht Null ist
if (is_finite($denominator) && $denominator != 0) {
return $numerator / $denominator;
} else {
return "Fehler:Der Nenner kann nicht null oder ungültig sein";
}
}
// prüfen
echo safe_divide(10, 2); // Ausgabe 5
echo safe_divide(10, 0); // Ausgabe Fehler:Der Nenner kann nicht null oder ungültig sein
echo safe_divide(10, INF); // Ausgabe Fehler:Der Nenner kann nicht null oder ungültig sein
?>
In diesem Beispiel bestimmt is_finite () , ob der Nenner eine endliche Zahl ist, und kann den Null-Dividierungsfehler mit dem $ nenner! = 0- Zustand effektiv vermeiden.
Bestimmen Sie direkt, ob es Null ist
if ($denominator == 0) {
// 处理Fehler
} else {
$result = $numerator / $denominator;
}
Verwenden Sie den ternären Operator, um Standardwerte zuzuweisen
$result = ($denominator == 0) ? 0 : $numerator / $denominator;
Verwenden Sie die Ausnahmebehandlung
Für PHP 7 und höher können Sie die Ausnahme von DivisionByZeroError ausführen, indem Sie das Null-Dividing-Fang erwischen:
try {
$result = $numerator / $denominator;
} catch (DivisionByZeroError $e) {
echo "除零Fehler:" . $e->getMessage();
}
Kombiniert mit is_finite Funktion
Wie oben gezeigt, kombiniert mit is_finite (), kann es die Gültigkeit des Divisors erkennen und den Fall vermeiden, in dem der Nenner unendlich oder Nan ist.
Die Funktion is_finite () ist ein gutes Instrument in PHP, um die Gültigkeit numerischer Werte zu beurteilen. In Kombination mit einem null-dividierenden Urteilsvermögen kann es den Entwicklern helfen, robusteren Code zu schreiben, um nicht-dividierende Fehler zu vermeiden, die Programmabstürze verursachen. Darüber hinaus ist auch die rationale Verwendung des bedingten Urteils und der Ausnahmeregelung ein häufiger und wirksamer Weg. Nach den tatsächlichen Bedürfnissen kann die Auswahl der richtigen Fehlerschutzmethode die Sicherheit und Stabilität des Codes verbessern.