Signatur
Beschreibung
SimdJsonValueError ist eine Fehlerklasse der SimdJson-PHP-Erweiterung, die von der eingebauten ValueError-Klasse erbt. Sie wird geworfen, wenn ein JSON-Wert nicht mit dem erwarteten Datentyp übereinstimmt – beispielsweise wenn ein Integer-Wert erwartet wird, der tatsächliche JSON-Inhalt aber ein Objekt oder Array enthält.
Die SimdJson-Erweiterung (SIMD JSON) bietet eine hochperformante Alternative zur eingebauten json_decode()-Funktion, indem sie prozessorinterne SIMD-Befehle (Single Instruction, Multiple Data) nutzt. Die Erweiterung stellt eigene spezifische Ausnahme- und Fehlerklassen bereit, um zwischen verschiedenen Fehlerursachen differenzieren zu können.
Da SimdJsonValueError von ValueError erbt, kann sie sowohl mit catch (SimdJsonValueError $e) für spezifische Behandlung als auch mit catch (ValueError $e) allgemein abgefangen werden. Dies ermöglicht eine flexible Fehlerbehandlungsarchitektur, bei der zwischen SimdJson-spezifischen und allgemeinen Typfehlern unterschieden werden kann.
Typische Auslöser sind fehlerhafte Tiefenwert-Parameter oder ungültige Flags beim Aufruf von SimdJson-Dekodierungsfunktionen, wenn der übergebene Wert nicht im erlaubten Wertebereich oder Typ liegt.
Beispiele
SimdJsonValueError abfangen bei ungültigem Depth-Parameter
<?php
// Voraussetzung: simdjson-Erweiterung ist installiert
// Ein ungültiger Tiefenwert (z. B. negativ) provoziert einen SimdJsonValueError
$json = '{"name": "Max", "age": 30}';
try {
// depth muss eine positive ganze Zahl sein; 0 ist ungültig
$result = simdjson_decode($json, true, 0);
} catch (\SimdJsonValueError $e) {
echo 'SimdJson-Wertefehler: ' . $e->getMessage() . PHP_EOL;
} catch (\ValueError $e) {
echo 'Allgemeiner Wertefehler: ' . $e->getMessage() . PHP_EOL;
}
Unterschiedliche Fehlerklassen gezielt behandeln
<?php
// Demonstration der Klassenhierarchie
function decodeSafe(string $json, bool $assoc = true, int $depth = 512): mixed {
try {
return simdjson_decode($json, $assoc, $depth);
} catch (\SimdJsonValueError $e) {
// Spezifisch: Typ-/Werteproblem in SimdJson
error_log('[SimdJson] Typfehler: ' . $e->getMessage());
return null;
} catch (\SimdJsonException $e) {
// Spezifisch: Syntaxfehler im JSON
error_log('[SimdJson] JSON-Fehler: ' . $e->getMessage());
return null;
}
}
// Ungültige Tiefe
$result = decodeSafe('{"key": "value"}', true, -1);
var_dump($result);
// Valides JSON
$result = decodeSafe('{"key": "value"}');
var_dump($result);
// Wichtig · Fallstricke
Hinweis zur Verfügbarkeit: SimdJsonValueError ist nur verfügbar, wenn die simdjson PHP-Erweiterung installiert ist. Sie ist nicht Teil des PHP-Kerns. Prüfe die Verfügbarkeit mit extension_loaded('simdjson').
Klassenhierarchie: SimdJsonValueError extends ValueError extends Error. Sie ist damit kein Exception-Subtyp und wird von einem catch (\Exception $e)-Block nicht erfasst. Verwende catch (\Throwable $e), um alle Fehler und Ausnahmen zu fangen.
Abgrenzung: Für Syntaxfehler im JSON-String selbst wird stattdessen SimdJsonException geworfen. SimdJsonValueError betrifft ausschließlich ungültige Parameterwerte beim Funktionsaufruf.