Verschiedene Kategorien und Arten von Fehlern identifizieren

Abgeschlossen

Vor dem Testen werden Error-Anweisungen erstellt, um festzulegen, was angezeigt werden soll, wenn ein Test erfolgreich ist oder fehlschlägt. Sie können Fehler mit den Anweisungen Throw, Try...catch, Finally, und Retry verwalten, um Ausnahmen bearbeiten. Eine Ausnahme ist eine geregelte Abweichung vom Codeablauf.

Das Schlüsselwort throw wird verwendet, um einen Ausnahme-Enumerationswert auszulösen. Die Anweisung throw Exception::error; wird zum Beispiel verwendet, um eine Fehlerausnahme auszulösen. Wir empfehlen die Verwendung Methode Global::error anstelle der Methode Exception::error. Die Methode Global::error kann eine Nachricht an den Infolog schreiben, wenn eine Fehlerausnahme ausgelöst wird, und eine Beschriftung automatisch in Text konvertieren. Sie können die Methode Global::error("Error message.") auch als error("Error message.") schreiben.

Die Schlüsselwörter try...catch werden verwendet, um eine durch die catch-Anweisung ausgelöste Ausnahme zu verarbeiten. Der Code wird im Codeblock try ausgeführt. Wenn ein Fehler ausgelöst wird, springt der Code ein, um die catch-Codeblöcke nacheinander auszuführen, um dadurch festzustellen, ob der ausgelöste Fehler zur Behandlung des Fehlers angegeben ist. Es ist üblich, den Exception::Error-Aufzählungswert durch die erste catch-Anweisung bearbeiten zu lassen und einen catch leer zu lassen, um nicht spezifizierte Fehler abzufangen. Das Schlüsselwort Finally kann mit der Anweisung Try...catch verwendet werden. Der Code im Codeblock finally wird ausgeführt, wenn der Code den Block try entweder normal oder aufgrund eines Fehlers verlässt. Weitere Informationen finden Sie im folgenden Code-Beispiel.

try
{
  // Code here.
}
catch (Exception::Numeric)
{
  info("Caught a Numeric exception.");
}
catch
{
  info("Caught an exception.");
}
finally
{
  // Executed no matter how the try block exits.
}

Das Schlüsselwort retry kann nur in einem catch-Block geschrieben werden. Dadurch springt der Code in die erste Zeile des try-Codeblocks zurück. Ein retry sollte verwendet werden, wenn das Problem über Code behoben werden kann. Das retry gibt dem Code eine zusätzliche Erfolgschance und zeigt einen Infolog an, sobald der try-Block mit der Ausführung beginnt. Sie müssen sicherstellen, dass die Ausführung retry keine Endlosschleife verursacht. Wir empfehlen, dass Sie eine Variable in den Block try aufnehmen, um zu testen, ob Sie sich in einer Endlosschleife befinden.

Sie können mehrere Fehlerausnahmen auslösen:

  • Pause – Der Benutzer hat auf Pause oder Strg + C gedrückt.
  • CLR-Fehler – Der Fehler ist aufgetreten, während die CLR-Funktionalität verwendet wurde.
  • Sicherheitsfehler bei Codezugriff – Fehler bei der Verwendung der Methode CodeAccessPermission.demand.
  • DDE-Fehler – Bei der Verwendung der DDE-Systemklasse ist ein Fehler aufgetreten.
  • Deadlock – Ein Datenbank-Deadlock ist aufgetreten, weil mehrere Transaktionen aufeinander warten.
  • DuplicateKey-Ausnahme – In einer Transaktion, die das Steuerelement „Vollständige Parallelität“ verwendet, ist ein Fehler aufgetreten. Die Transaktion kann wiederholt werden.
  • DuplicateKey-Ausnahme wurde nicht wiederhergestellt – In einer Transaktion, die das Steuerelement „Vollständige Parallelität“ verwendet, ist ein Fehler aufgetreten. Der Code wird nicht wiederholt, und diese Ausnahme kann nicht in einer Transaktion entdeckt werden.
  • Fehler – Ein schwerwiegenden Fehler ist aufgetreten. Die Transaktion wurde angehalten.
  • Intern – Im Entwicklungssystem ist ein interner Fehler aufgetreten.
  • Numerisch – Ein Fehler ist aufgetreten, als die str2int‑, str2int64‑, oder str2num-Funktion verwendet wurde.
  • Aktualisierungskonflikt – Während einer Aktualisierung ist ein Fehler in einer Transaktion aufgetreten.
  • Aktualisierungskonflikt wurde nicht wiederhergestellt – Während einer Aktualisierung ist ein Fehler in einer Transaktion aufgetreten. Diese Ausnahme kann nicht wiederholt werden.
  • Vorübergehender SQL-Verbindungsfehler – Während des Abfragendurchlaufs ist ein Fehler aufgetreten. Die Transaktion wird abgebrochen. Diese Ausnahme tritt nicht in einer Transaktion auf.