in-codice affermazioni sono di solito utilizzati per l'inizio di un metodo, al fine di confermare che alcune pre-condizioni sono state soddisfatte, prima dell'entrata di questa particolare funzione ad esempio:
Window::paint()
{
assert(m_device != NULL);
m_device->repaintRegion();
}
sono qui principalmente per intercettare gli errori di dipendenze non soddisfatte tra metodi o classi.
le asserzioni nei framework di test sono diverse e solitamente utilizzate per il test dell'unità, per assicurarsi che l'unità abbia restituito tutto ciò di cui aveva bisogno per tornare.
Le eccezioni dovrebbero essere generate in genere laddove la realtà (cioè i sistemi esterni) ci ha fornito un caso che il codice non può/non deve gestire. è una via facile per problemi rari ma ancora attesi. per esempio - un timeout in attesa di un server solitamente disponibile. o, non abbastanza memoria. Non lo userei come aiuto per la logica di programmazione.
alla tua domanda, potrebbe esserci un modo per cogliere le eccezioni nei framework di test circondando l'unità testata con try-catch. ma non sono sicuro che sia davvero desiderabile.
HTH
in base al post: http://stackoverflow.com/questions/37473/how-can-i-assert-without-using-abort. Che ne dici di scrivere una macro che usa '' catch''? – gongzhitaao