Start · Sprachen · PHP · Referenz · UI\Exception\RuntimeException

UI\Exception\RuntimeException

Klasse

Wird von der PHP-UI-Erweiterung (ext/ui) ausgelöst, wenn ein Laufzeitfehler in der grafischen Benutzeroberfläche auftritt.

seit PHP 7.1.0 Kategorie: error

Signatur

class UI\Exception\RuntimeException extends \RuntimeException

Beschreibung

UI\Exception\RuntimeException ist die spezifische Ausnahme der UI-Erweiterung (ext/ui, basierend auf libui), die bei Laufzeitfehlern ausgelöst wird. Sie erbt von der eingebauten \RuntimeException und steht damit im PHP-Standardklassenhierarchie-Baum der Exceptions.

Typische Auslöser sind Operationen, die zur Laufzeit fehlschlagen: das Hinzufügen von Controls zu einem bereits gerenderten Fenster, der Aufruf von UI-Methoden in ungültigem Zustand oder das Starten der Event-Schleife, wenn kein Fenster existiert. Die Ausnahme signalisiert also immer ein logisches oder zeitliches Problem – der Code selbst ist syntaktisch korrekt, aber der Aufruf passt nicht zum aktuellen Zustand der Anwendung.

Da UI\Exception\RuntimeException von \RuntimeException erbt, kann sie sowohl mit einem spezifischen catch(UI\Exception\RuntimeException $e)-Block als auch mit einem allgemeinen catch(\RuntimeException $e)-Block abgefangen werden. Für eine feingranulare Fehlerbehandlung in GUI-Anwendungen wird der spezifische Block empfohlen.

Die UI-Erweiterung ist als experimentell eingestuft; die API kann sich zwischen Versionen ändern. In Produktionsumgebungen sollte sie daher nur mit Bedacht eingesetzt werden.

Beispiele

Abfangen eines Laufzeitfehlers beim Starten der UI-Schleife

<?php
use UI\Window;
use UI\Exception\RuntimeException;

try {
    // Versuch, die UI-Schleife ohne ein aktives Fenster zu starten
    UI\run();
} catch (RuntimeException $e) {
    echo 'UI-Laufzeitfehler: ' . $e->getMessage() . PHP_EOL;
    echo 'Code: ' . $e->getCode() . PHP_EOL;
}
UI-Laufzeitfehler: there are no open windows Code: 0

Fehler beim Hinzufügen eines Controls nach dem Rendern

<?php
use UI\Window;
use UI\Controls\Button;
use UI\Exception\RuntimeException;

try {
    $window = new Window('Test', 400, 300, false);
    $window->show();

    // Ein Control hinzufügen, nachdem das Fenster bereits gezeigt wurde
    $button = new Button('Klick mich');
    $window->add($button);
} catch (RuntimeException $e) {
    echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
} catch (\Throwable $e) {
    echo 'Allgemeiner Fehler: ' . $e->getMessage() . PHP_EOL;
}
Fehler: cannot make changes to a destroyed or uninitialized UI control

// Wichtig · Fallstricke

Experimentelle Erweiterung: ext/ui gilt seit ihrer Einführung als experimentell und ist nicht Bestandteil der Standard-PHP-Distribution. Sie muss separat installiert werden (z. B. über PECL). Die API und das Ausnahme-Verhalten können sich ohne Vorankündigung ändern.

Plattformabhängigkeit: Da libui plattformabhängige GUI-Backends nutzt (Win32, Cocoa, GTK), können sich die genauen Fehlermeldungen und Auslöser je nach Betriebssystem unterscheiden. Testcode sollte auf allen Zielplattformen überprüft werden.

Die Klassenhierarchie lautet: UI\Exception\RuntimeException\RuntimeException\Exception\Throwable.