in-kodu twierdzenia są zwykle używane na początku sposobu, w celu potwierdzenia, że pewne warunki wstępne zostały spełnione, przed wejściem tej konkretnej funkcji na przykład:
Window::paint()
{
assert(m_device != NULL);
m_device->repaintRegion();
}
są tutaj przede wszystkim do złapania błędów niezerowych zależności między metodami lub klasami.
asercje w frameworkach testowych są różne i zwykle używane do testowania jednostek, aby upewnić się, że urządzenie zwróciło wszystko, co było potrzebne do zwrócenia.
wyjątki powinny być wyrzucane zwykle tam, gdzie rzeczywistość (tj. Systemy zewnętrzne) zapewnia nam przypadek, którego kod nie może/nie powinien obsłużyć. jest to łatwe wyjście z rzadkich, ale wciąż oczekiwanych problemów. na przykład - czas oczekiwania na zwykle dostępny serwer. lub, za mało pamięci. Nie użyłbym tego jako pomocy w programowaniu logiki.
na twoje pytanie, może istnieć sposób na przechwytywanie wyjątków w frameworkach testowych przez otaczanie jednostki testowanej przy użyciu try-catch. ale nie jestem pewien, czy jest to naprawdę pożądane.
HTH
w oparciu o wpis: http://stackoverflow.com/questions/37473/how-can-i-assert-without-using-abort. A co z pisaniem makra z "catch"? – gongzhitaao