Start · Sprachen · PHP · Referenz · MongoDB\Driver\Exception\LogicException

MongoDB\Driver\Exception\LogicException

Klasse

Wird ausgelöst, wenn ein Fehler in der Programmlogik des MongoDB-Treibers erkannt wird, der auf einen Programmierfehler hindeutet.

seit PHP 1.0.0 Kategorie: error

Signatur

class MongoDB\Driver\Exception\LogicException extends \LogicException implements MongoDB\Driver\Exception\Exception

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;
}
Logikfehler: Failed to parse MongoDB URI: 'ungueltige_uri://localhost'

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;
}
Logikfehler (Programmierfehler): Invalid namespace:

// 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.