Signatur
Beschreibung
MongoDB\Driver\Exception\LogicException ist eine Ausnahme des MongoDB-PHP-Treibers, die geworfen wird, wenn ein logischer Fehler auftritt – also ein Fehler, der prinzipiell durch korrekten Code vermieden werden kann. Sie erweitert die native PHP-Klasse \LogicException und implementiert das treiberspezifische Marker-Interface MongoDB\Driver\Exception\Exception.
Typische Situationen, in denen diese Ausnahme auftritt, sind zum Beispiel das Übergeben ungültiger Argumente, das Verwenden von Objekten in einem unzulässigen Zustand oder das Aufrufen von Methoden in einer falschen Reihenfolge. Da es sich um einen Programmierfehler handelt, sollte diese Ausnahme idealerweise nicht im laufenden Betrieb abgefangen werden, sondern bereits während der Entwicklung behoben werden.
Zum Abfangen aller logischen Fehler des MongoDB-Treibers kann entweder direkt MongoDB\Driver\Exception\LogicException oder das gemeinsame Interface MongoDB\Driver\Exception\Exception verwendet werden. Im Gegensatz dazu stehen Laufzeitfehler, die von MongoDB\Driver\Exception\RuntimeException repräsentiert werden.
Beispiele
LogicException beim Übergeben ungültiger Argumente abfangen
<?php
require 'vendor/autoload.php';
use MongoDB\Driver\Manager;
use MongoDB\Driver\Exception\LogicException;
try {
// Ungültiger URI provoziert eine LogicException
$manager = new Manager('ungueltige_uri://localhost');
} catch (LogicException $e) {
echo "Logikfehler: " . $e->getMessage() . PHP_EOL;
echo "Code: " . $e->getCode() . PHP_EOL;
}
Alle MongoDB-Ausnahmen über das gemeinsame Interface abfangen
<?php
require 'vendor/autoload.php';
use MongoDB\Driver\Manager;
use MongoDB\Driver\BulkWrite;
use MongoDB\Driver\Exception\Exception as MongoDBException;
use MongoDB\Driver\Exception\LogicException;
use MongoDB\Driver\Exception\RuntimeException;
try {
$manager = new Manager('mongodb://localhost:27017');
$bulk = new BulkWrite();
// Versuch, ein Dokument mit einem ungültigen Namespace einzufügen
$manager->executeBulkWrite('', $bulk);
} catch (LogicException $e) {
// Programmierfehler — sollte behoben werden
echo "Logikfehler (Programmierfehler): " . $e->getMessage() . PHP_EOL;
} catch (RuntimeException $e) {
// Laufzeitfehler — z. B. Verbindungsprobleme
echo "Laufzeitfehler: " . $e->getMessage() . PHP_EOL;
} catch (MongoDBException $e) {
// Alle anderen MongoDB-Ausnahmen
echo "MongoDB-Fehler: " . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Hinweis zur Fehlerbehandlung: Da LogicException auf Programmierfehler hindeutet, ist es in der Regel sinnvoller, die Ursache zu beheben, als die Ausnahme zur Laufzeit abzufangen und zu ignorieren. Ein allgemeines Abfangen dieser Ausnahme in Produktionscode kann dazu führen, dass Fehler unentdeckt bleiben.
Die Klasse gehört zur MongoDB-Treiber-Extension (ext-mongodb) und ist nicht Teil der höherstufigen mongodb/mongodb-Bibliothek, obwohl diese intern auf den Treiber aufbaut.