Signatur
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() . ')';
}
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();
}
// 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.