in-Code Behauptungen sind in der Regel am Anfang eines Verfahrens verwendet, um, dass bestimmte Voraussetzungen erfüllt waren, um zu bestätigen, vor dem Eintritt dieser besonderen Funktion zum Beispiel:
Window::paint()
{
assert(m_device != NULL);
m_device->repaintRegion();
}
sie sind hier in erster Linie zu fangen Bugs von nicht erfüllten Abhängigkeiten zwischen Methoden oder Klassen.
Assertionen in Test-Frameworks sind unterschiedlich und werden normalerweise für Komponententests verwendet, um sicherzustellen, dass das Gerät zurückgibt, was es benötigt, um zurückzukehren.
Ausnahmen sollten normalerweise ausgelöst werden, wenn die Realität (d. H. Externe Systeme) uns mit einem Fall versehen hat, den der Code nicht verarbeiten kann/sollte. Es ist ein einfacher Ausweg für seltene, aber immer noch zu erwartende Probleme. zum Beispiel - eine Auszeit wartet auf einen Server in der Regel verfügbar. oder, nicht genug Speicher. Ich würde es nicht als Hilfe für die Programmierlogik verwenden.
zu Ihrer Frage, es könnte eine Möglichkeit geben, Ausnahmen in Test-Frameworks zu fangen, indem Sie die getestete Einheit mit try-catch umgehen. aber ich bin mir nicht sicher, ob es wirklich wünschenswert ist.
HTH
basierend auf dem Beitrag: http://StackOverflow.com/Questions/37473/How-CanI-Asssert-without-using-abort. Was ist mit dem Schreiben eines Makros, das '' catch'' verwendet? – gongzhitaao