Handbuch

37
Exceptions

Es gibt viele Exceptions, die bei der Ausführung eines Tests mit QF-Test geworfen werden können. Dieses Kapitel führt alle Exceptions mit ihren typischen Fehlermeldungen und einer kurzen Erklärung auf.

Wenn Sie mit Exceptions in Skripten arbeiten wollen, werfen Sie bitte ein Blick in Abschnitt 43.9.

TestException

Dies ist die Basisklasse aller QF-Test Exceptions. Eine konkrete Exception ist nie von dieser, sondern immer von einer davon abgeleiteten Klasse. Ein 'Catch' Knoten, dessen 'Exception Klasse' auf TestException gesetzt ist, fängt alle möglichen Exceptions. Wie in Java selbst sollten Sie einen solchen 'Catch' nur in Ausnahmefällen verwenden, da dadurch Exceptions verschleiert werden können, mit denen zunächst nicht gerechnet wurde.

ComponentNotFoundException

Diese Exception wird geworfen, wenn die Zielkomponente eines Events oder Checks nicht ermittelt werden kann. Auch das Scheitern eines 'Warten auf Komponente' Knotens führt zu einer ComponentNotFoundException, sofern dessen 'Warten auf Verschwinden' Attribut nicht gesetzt ist.

Basisklasse: TestException

Meldung: Die Zielkomponente wurde nicht gefunden.

DocumentNotLoadedException

Diese Exception ist eine Variante der ComponentNotFoundException und wird speziell beim Fehlschlagen eines 'Warten auf Laden des Dokuments' Knotens geworfen.

Basisklasse: ComponentNotFoundException

Meldung: Das Dokument wurde nicht (neu) geladen.

PageNotFoundException

Diese Exception ist eine Variante der ComponentNotFoundException und wird speziell beim Fehlschlagen eines 'Auswahl' Knotens geworfen, wenn in einem PDF-Dokument die anzuzeigende Seite nicht gefunden wurde.

Basisklasse: ComponentNotFoundException

Meldung: Die gewünschte Seite "Seitenname" wurde nicht gefunden.

ComponentFoundException

Dies ist das Gegenstück zur ComponentNotFoundException und wird geworfen, wenn ein 'Warten auf Komponente' mit gesetztem 'Warten auf Verschwinden' Attribut scheitert.

Basisklasse: TestException

Meldung: Die Zielkomponente existiert.

ModalDialogException

Diese Exception wird geworfen, wenn ein Event von einem modalen Dialog blockiert wird. Siehe Option Auf modale Dialoge prüfen.

Basisklasse: TestException

Meldung: Ein modaler Dialog hat diesen Event blockiert. (Plus Information über den Dialog).

ComponentCannotGetFocusException

Diese Exception wird geworfen, wenn die Zielkomponente für einen 'Tastaturevent' oder 'Texteingabe' Knoten ein Textfeld ist, das aus irgendwelchen Gründen den Tastaturfokus nicht erhalten kann. Mit JDK 1.4 führt dies dazu, dass der Event nicht an die Komponente übermittelt werden kann.

Basisklasse: TestException

Meldung: Die Zielkomponente kann den Tastaturfokus nicht erhalten.

DisabledComponentException

Diese Exception wird geworfen, wenn die Zielkomponente für einen 'Mausevent', 'Tastaturevent' oder 'Texteingabe' Knoten deaktiviert ist. In diesem Fall würden die Events einfach ignoriert und damit höchstwahrscheinlich zu Fehlern im weiteren Verlauf des Tests führen.

Aus Gründen der Rückwärtskompatibilität kann diese Exception durch Deaktivieren der Option DisabledComponentExceptions werfen unterdrückt werden.

Basisklasse: TestException

Meldung: Die Zielkomponente ist deaktiviert und kann daher keine Events empfangen.

DisabledComponentStepException

Diese Exception wird geworfen, wenn die Zielkomponente für einen 'Mausevent', 'Tastaturevent' oder 'Texteingabe' Knoten unter 'Fenster und Komponenten' deaktiviert ist.

Basisklasse: TestException

Meldung: Die Zielkomponente ist unter 'Fenster und Komponenten' deaktiviert und kann daher keine Events empfangen.

ExecutionTimeoutExpiredException

Diese Exception wird geworfen, wenn die angegebene maximale Ausführungszeit eines Knotens abgelaufen ist.

Basisklasse: TestException

Meldung: Zeitbeschränkung für Ausführung von ... ms abgelaufen.

BusyPaneException

Diese Exception wird geworfen, wenn die Zielkomponente für einen 'Mausevent', 'Tastaturevent' oder 'Texteingabe' Knoten von einer GlassPane mit einem 'busy' Mauszeiger verdeckt ist. In diesem Fall würden die Events normalerweise von der GlassPane abgefangen werden und damit höchstwahrscheinlich zu Fehlern im weiteren Verlauf des Tests führen. Die Option Warten bei 'busy' GlassPane (ms) legt fest, wie lange QF-Test auf das Verschwinden der GlassPane wartet, bevor die Exception geworfen wird.

Basisklasse: TestException

Meldung: Die Zielkomponente wird von einer 'busy' GlassPane verdeckt.

InvisibleDnDTargetException

Diese Exception wird geworfen, wenn der Zielpunkt in der Komponente für einen 'Mausevent' vom Typ DRAG_FROM, DRAG_OVER oder DROP_TO für eine Drag&Drop Operation nicht sichtbar ist und nicht durch Scrollen der Zielkomponente sichtbar gemacht werden kann.

Basisklasse: TestException

Meldung: Der Zielpunkt der Drag&Drop Operation konnte nicht sichtbar gemacht werden.

DeadlockTimeoutException

Diese Exception wird geworfen, wenn das SUT für einen vorgegebenen Zeitraum nicht reagiert. Dieser Zeitraum wird durch die Option Erkennen von Deadlocks (s) festgelegt.

Basisklasse: TestException

Meldung: Das Zeitlimit für die Operation wurde überschritten. Es ist sehr wahrscheinlich, dass der Client '...' sich in einem Deadlock befindet.

VariableException

Diese Exception wird nicht selbst geworfen, sondern ist die Basisklasse für verschiedene Exceptions, die im Zusammenhang mit Variablenexpansion geworfen werden können.

Basisklasse: TestException

BadVariableSyntaxException

Diese Exception wird geworfen, wenn ein Ausdruck bei der Variablenexpansion keine gültige Syntax aufweist, z.B. weil die schließende Klammer fehlt.

Basisklasse: VariableException

Meldung: Ungültige Variablensyntax: '...'

MissingPropertiesException

Diese Exception wird geworfen, wenn keine Properties oder kein ResourceBundle für die Gruppe einer erweiterten Variablenexpansion der Form ${Gruppe:Name} verfügbar sind (siehe auch 'Ressourcen laden' und 'Properties laden').

Basisklasse: VariableException

Meldung: Unter dem Namen '...' waren keine Properties oder Ressourcen verfügbar.

MissingPropertyException

Diese Exception wird geworfen, wenn der Name bei einer erweiterten Variablenexpansion der Form ${Gruppe:Name} nicht verfügbar ist (siehe auch 'Ressourcen laden' und 'Properties laden').

Basisklasse: VariableException

Meldung: Es gibt keine Property oder Ressource namens '...' in '...'.

RecursiveVariableException

Diese Exception wird geworfen, wenn die Expansion einer Variablen zu Rekursion führt, z.B. wenn Sie eine Variable namens x auf den Wert $(y) und die Variable namens y auf $(x) setzen und versuchen, den Wert $(x) zu expandieren.

Basisklasse: VariableException

Meldung: Der Wert der Variable '...' konnte aufgrund rekursiver Zuweisung nicht ausgewertet werden.

UnboundVariableException

Diese Exception wird geworfen, wenn eine Variable bei einer Variablenexpansion nicht existiert.

Basisklasse: VariableException

Meldung: Die Variable '...' ist unbekannt.

VariableNumberException

Diese Exception wird geworfen, wenn das Ergebnis einer Variablenexpansion für ein numerisches Attribut keine Zahl darstellt.

Basisklasse: VariableException

Meldung: Der Wert '...' ist keine gültige Zahl.

BadExpressionException

Diese Exception wird geworfen, wenn ein Ausdruck der Form $[...] fehlerhaft ist (vgl. Abschnitt 7.6).

Basisklasse: ScriptException

Meldung: Der Ausdruck '...' ist ungültig.

BadTestException

Diese Exception wird geworfen, wenn die 'Bedingung' eines 'If' oder 'Elseif' Knotens eine ungültige Syntax aufweist.

Basisklasse: ScriptException

Meldung: Der Ausdruck '...' ist keine gültige Bedingung.

BadRegexpException

Diese Exception wird geworfen, wenn ein regulärer Ausdruck keine gültige Syntax aufweist (vgl Abschnitt 42.4), z.B. bei einem 'Element' oder 'Check Text' Knoten.

Basisklasse: TestException

Meldung: Der Wert '...' ist kein gültiger regulärer Ausdruck.

BadRangeException

Diese Exception wird geworfen, wenn das Attribut 'Iterationsbereiche' eines 'Daten' Knotens ungültige Syntax aufweist oder einen Index außerhalb des Datenbereichs enthält.

Basisklasse: TestException

Meldung: Ungültige Syntax für Iterationsbereiche: '...'.
Ungültiger Index im Iterationsbereich: '...'.

CannotExecuteException

Diese Exception wird geworfen, wenn der Start eines Prozesses durch einen 'Java SUT Client starten' Knoten fehlschlägt.

Basisklasse: TestException

Meldung: Fehler beim Starten des Prozesses '...'. Bitte überprüfen Sie die Angaben und die PATH Einstellung.

InvalidDirectoryException

Diese Exception wird geworfen, wenn das 'Verzeichnis' Attribut eines 'Java SUT Client starten' Knotens auf ein nicht existierendes Verzeichnis verweist.

Basisklasse: TestException

Meldung: Das Verzeichnis '...' existiert nicht.

CheckFailedException

Diese Exception wird geworfen, wenn ein Check fehlschlägt, dessen 'Im Fehlerfall Exception werfen' Attribut gesetzt ist.

Basisklasse: TestException

Meldung: Der Check für Client '...' ist fehlgeschlagen. Erwartet: '...'. Erhalten: '...'.

CheckNotSupportedException

Wie im Abschnitt über Checks beschrieben, kann sich jeder Check nur auf bestimmte Komponenten beziehen. Diese Exception wird geworfen, wenn die Zielkomponente eines Checks für diesen keinen Sinn ergibt.

Basisklasse: TestException

Meldung: Dieser Check ist für eine Komponente der Klasse '...' nicht möglich.

OperationNotSupportedException

Diese Exception wird geworfen, wenn eine Operation wie 'Text auslesen' für die angegebene Zielkomponente nicht möglich ist.

Basisklasse: TestException

Meldung: Diese Operation ist für eine Komponente der Klasse '...' nicht möglich.

BadComponentException

Diese Exception wird geworfen, wenn eine Komponente für einen Event keinen Sinn ergibt, z.B. etwas anderes als ein Fenster für einen 'Fensterevent'.

Basisklasse: TestException

Meldung: Die Komponente der Klasse '...' ist kein Fenster.

IndexFormatException

Diese Exception wird geworfen, wenn der Index eines Unterelements in einem ungültigen Format angegeben ist (vgl. Abschnitt 6.3).

Basisklasse: TestException

Meldung: Der Wert '...' ist kein gültiger Textindex/Zahl/regulärer Ausdruck.

IndexFoundException

Diese Exception wird geworfen, wenn ein Unterelement gefunden wird, obwohl bei der Ausführung eines 'Warten auf Komponente' Knotens auf dessen Abwesenheit geprüft wird.

Basisklasse: ComponentFoundException

Meldung: Kein Element für Index '...' gefunden.

IndexNotFoundException

Diese Exception wird geworfen, wenn kein Unterelement für einen angegebenen Index gefunden wurde.

Basisklasse: ComponentNotFoundException

Meldung: Kein Element für Index '...' gefunden.

IndexRequiredException

Diese Exception wird geworfen, wenn ein für eine Operation notwendiger Index nicht angegeben wurden, z.B. für einen 'Check Text' Knoten für einen JTree.

Basisklasse: TestException

Meldung: Diese Operation erfordert einen Index.

UnexpectedIndexException

Diese Exception wird geworfen, wenn ein Index für ein Unterelement angegeben ist, obwohl eine Operation keinen benötigt, z.B. für einen 'Check Elemente' Knoten für einen JTree.

Basisklasse: TestException

Meldung: Diese Operation unterstützt für eine Komponente der Klasse '...' keinen Index.

ClientNotConnectedException

Diese Exception wird geworfen, wenn keine Verbindung zum angegebenen SUT Client für eine Operation besteht, obwohl im Gegensatz zur NoSuchClientException ein Prozess unter diesem Namen verfügbar ist.

Basisklasse: TestException

Meldung: Es besteht keine Verbindung mit Client '...'.

NoSuchClientException

Diese Exception wird geworfen, wenn der angegebene SUT Client für eine Operation nicht existiert.

Basisklasse: TestException

Meldung: Client '...' existiert nicht.

DuplicateClientException

Diese Exception wird geworfen, wenn versucht wird, mehr als einen Prozess gleichzeitig unter dem selben Namen zu starten.

Basisklasse: TestException

Meldung: Es wurde bereits ein Client namens '...' gestartet.

UnexpectedClientException

Diese Exception wird geworfen, wenn im SUT eine unerwartete Exception beim Abspielen eines Events geworfen wird. Sofern es sich dabei nicht um einen Bug in QF-Test handelt, deutet dies auf ein echtes Problem im SUT hin.

Basisklasse: TestException

Meldung: Unerwartete Exception in Client '...'.

ClientNotTerminatedException

Diese Exception wird geworfen, wenn bei der Ausführung eines 'Warten auf Programmende' Knotens der Prozess nicht terminiert.

Basisklasse: TestException

Meldung: Der Prozess '...' wurde nicht beendet.

UnexpectedExitCodeException

Diese Exception wird geworfen, wenn der Exitcode eines Prozesses nicht den Vorgaben des Attributs 'Erwarteter Exitcode' eines 'Warten auf Programmende' Knotens entspricht.

Basisklasse: TestException

Meldung: Falscher Exitcode.

BadExitCodeException

Diese Exception wird geworfen, wenn das Attribut 'Erwarteter Exitcode' eines 'Warten auf Programmende' Knotens nicht der Spezifikation entspricht.

Basisklasse: TestException

Meldung: Ungültiger Exitcode '...'. Bitte verwenden Sie '==', '!=', '<' oder '>' gefolgt von einer Zahl.

ComponentIdMismatchException

Diese Exception wird geworfen, wenn das 'QF-Test ID der Komponente' Attribut eines Knotens auf einen Knoten verweist, der nicht vom Typ 'Fenster', 'Komponente' oder 'Element' ist.

Basisklasse: TestException

Meldung: Der Knoten '...' mit der QF-Test ID '...' ist keine Komponente.

UnresolvedComponentIdException

Diese Exception wird geworfen, wenn das Ziel eines 'QF-Test ID der Komponente' Attributs nicht existiert.

Basisklasse: TestException

Meldung: Es gibt keine Komponente mit der QF-Test ID '...'.

TestNotFoundException

Diese Exception wird geworfen, wenn der 'Testfall' oder das 'Testfallsatz' für einen 'Testaufruf' nicht existiert.

Basisklasse: TestException

Meldung: Der Test '...' ist nicht vorhanden.

DependencyNotFoundException

Diese Exception wird geworfen, wenn die 'Abhängigkeit' für einen 'Bezug auf Abhängigkeit' nicht existiert.

Basisklasse: TestException

Meldung: Die Abhängigkeit '...' ist nicht vorhanden.

ProcedureNotFoundException

Diese Exception wird geworfen, wenn die 'Prozedur' für einen 'Prozeduraufruf' nicht existiert.

Basisklasse: TestException

Meldung: Die Prozedur '...' ist nicht vorhanden.

StackOverflowException

Diese Exception wird geworfen, wenn die Verschachtelungstiefe von 'Prozeduraufrufen' den Wert der Option Größe des Callstacks überschreitet, was auf eine endlose Rekursion von Prozeduraufrufen hindeutet.

Basisklasse: TestException

Meldung: Zu viele verschachtelte Prozeduraufrufe.

UserException

Diese Exception wird explizit durch einen 'Throw' Knoten geworfen.

Basisklasse: TestException

Meldung: Die 'Meldung für die Exception' des 'Throw' Knotens.

CannotRethrowException

Diese Exception wird geworfen, wenn versucht wird, durch einen 'Rethrow' Knoten eine Exception erneut zu werfen, ohne dass vorher eine Exception durch einen 'Catch' Knoten abgefangen wurde.

Basisklasse: TestException

Meldung: Erneutes werfen einer abgefangenen Exception ist nur innerhalb eines Catch Knotens möglich.

ScriptException

Diese Exception wird geworfen, wenn ein Script einen Fehler liefert.

Basisklasse: TestException

Meldung: Das Skript ist mit der folgenden Meldung fehlgeschlagen:...

BreakException

Dies ist keine normale TestException und sie kann nicht von einem 'Catch' Knoten gefangen werden. Sie wird von einem 'Break' Knoten geworfen um aus einer Schleife auszubrechen. In einem Skript erfüllt das Werfen einer BreakException den selben Zweck. Wird sie außerhalb einer Schleife geworfen, löst eine BreakException einen Fehler aus.

Basisklasse: TestException

Meldung: Es wurde ein Break außerhalb einer Schleife ausgelöst.

ReturnException

Dies ist keine normale TestException und sie kann nicht von einem 'Catch' Knoten gefangen werden. Sie wird von einem 'Return' Knoten geworfen um aus einer 'Prozedur' zurückzukehren. In einem Skript erfüllt das Werfen einer ReturnException den selben Zweck. Wird sie außerhalb einer 'Prozedur' geworfen, löst eine ReturnException einen Fehler aus.

Basisklasse: TestException

Meldung: Es wurde ein Return außerhalb einer Prozedur ausgelöst.

TestOutOfMemoryException

Dies ist eine spezielle Exception, die geworfen wird, wenn QF-Test feststellt, dass der für die Testausführung zur Verfügung stehende Speicher zu Ende geht. Die Exception führt zum sofortigen Abbruch des Testlaufs und kann nicht gefangen werden, da QF-Test ohne Speicher nicht viel tun kann, um sie zu behandeln. Allerdings versucht QF-Test, sich eine kleine Speicherreserve zu erhalten und zumindest das Protokoll zu speichern.