Start · Sprachen · PHP · Referenz · RarException

RarException

Klasse

Ausnahme, die von der RAR-Erweiterung ausgelöst wird, wenn ein Fehler beim Lesen oder Verarbeiten von RAR-Archiven auftritt.

Kategorie: error

Signatur

class RarException extends RuntimeException

Beschreibung

RarException ist die zentrale Ausnahmenklasse der PECL-Erweiterung rar. Sie wird geworfen, sobald ein Fehler beim Öffnen, Lesen oder Extrahieren eines RAR-Archivs auftritt – beispielsweise wenn eine Archivdatei nicht gefunden wird, das Passwort fehlt oder das Archiv beschädigt ist.

Die Klasse erbt von RuntimeException und stellt damit alle Standardmethoden wie getMessage(), getCode() und getTrace() zur Verfügung. Zusätzlich bietet sie die statische Methode RarException::isUsingExceptions(), mit der geprüft werden kann, ob die Erweiterung im Ausnahmemodus arbeitet, sowie RarException::setUsingExceptions(), um diesen Modus ein- oder auszuschalten.

Standardmäßig verwendet die RAR-Erweiterung keine Ausnahmen, sondern gibt bei Fehlern false zurück und setzt einen Warnhinweis. Erst nach dem Aufruf von RarException::setUsingExceptions(true) werden Fehler als RarException geworfen, was einen saubereren, modernen Fehlerbehandlungsfluss mit try/catch-Blöcken ermöglicht.

Der Einsatz ist überall dort sinnvoll, wo RAR-Archive in einer Webanwendung oder einem CLI-Skript verlässlich verarbeitet werden müssen und eine strukturierte Fehlerbehandlung gefordert ist.

Beispiele

Ausnahmemodus aktivieren und RAR-Archiv öffnen

<?php
// Ausnahmemodus der RAR-Erweiterung aktivieren
RarException::setUsingExceptions(true);

try {
    $rar = RarArchive::open('/pfad/zum/archiv.rar');
    $entries = $rar->getEntries();
    foreach ($entries as $entry) {
        echo $entry->getName() . PHP_EOL;
    }
    $rar->close();
} catch (RarException $e) {
    echo 'RAR-Fehler: ' . $e->getMessage() . ' (Code: ' . $e->getCode() . ')';
}
RAR-Fehler: Failed to open /pfad/zum/archiv.rar (Code: 15)

Prüfen ob Ausnahmemodus aktiv ist

<?php
// Standardmäßig ist der Ausnahmemodus deaktiviert
var_dump(RarException::isUsingExceptions()); // bool(false)

// Ausnahmemodus einschalten
RarException::setUsingExceptions(true);
var_dump(RarException::isUsingExceptions()); // bool(true)

// Passwortgeschütztes Archiv ohne Passwort öffnen
try {
    $rar = RarArchive::open('/pfad/zum/geschuetzt.rar');
    $entries = $rar->getEntries();
    foreach ($entries as $entry) {
        $entry->extract('/tmp/ziel/', null, 'falsches_passwort');
    }
    $rar->close();
} catch (RarException $e) {
    echo 'Fehler beim Extrahieren: ' . $e->getMessage();
}
bool(false) bool(true) Fehler beim Extrahieren: ERAR_BAD_DATA

// Wichtig · Fallstricke

Standardverhalten: Ohne den Aufruf von RarException::setUsingExceptions(true) werden Fehler lediglich als PHP-Warnungen ausgegeben und betroffene Methoden geben false zurück. In produktivem Code sollte der Ausnahmemodus explizit aktiviert werden, um Fehler nicht stillschweigend zu übersehen.

Verfügbarkeit: RarException ist nur verfügbar, wenn die PECL-Erweiterung rar installiert und aktiviert ist (extension=rar in der php.ini). Die Erweiterung unterstützt ausschließlich das Lesen von RAR-Archiven – das Erstellen ist nicht möglich.

Fehlercodes: Die über getCode() zurückgegebenen Codes entsprechen den internen UnRAR-Fehlerkonstanten und können je nach Version der zugrunde liegenden Bibliothek variieren.