Come posso descrivere un metodo che non ha effetti collaterali se viene generata un'eccezione durante l'esecuzione?
-
08-07-2019 - |
Domanda
Non riesco proprio a ricordare la terminologia utilizzata per questa e altre proprietà correlate.
MODIFICA - Forse un tale concetto non esiste ma ricordo di aver letto qualcosa in C ++ efficace (o C ++ più efficace) in cui sosteneva di utilizzare gli swap per eseguire il commit delle modifiche all'ultimo perché le funzioni di scambio vettoriale erano garantite per non lanciare un fa eccezione.
Soluzione
Penso che intendi dire che la funzione è "sicura dalle eccezioni". Vedi ad es. http://en.wikipedia.org/wiki/Exception_safety .
L'articolo di Wikipedia divide ulteriormente la sicurezza in vari livelli. Questo è quello che è rilevante qui:
2. Semantica di commit o rollback, nota anche come sicurezza di eccezione eccezionale o garanzia di non modifica: le operazioni possono fallire, ma le operazioni fallite sono garantite senza effetti collaterali, quindi tutti i dati mantengono i valori originali.
C'è un riferimento a un documento di progettazione STL che introduce la sicurezza delle eccezioni e la semantica del commit-o-rollback: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.asc
Altri suggerimenti
Potresti pensare a una garanzia di eccezione , in particolare la "forte garanzia ".
Dopo aver letto la tua modifica, sospetto che il tuo titolo sia leggermente errato. Intendi davvero che non ha effetti collaterali se viene generata o meno un'eccezione (secondo la dicitura attuale) o che non ha effetti collaterali quando viene generata un'eccezione, ma se il metodo viene completato senza generare un'eccezione quindi avrà / può avere effetti collaterali? C'è una differenza abbastanza grande :)
Quest'ultimo è descritto in Accelerated C # 2008 come "neutralità delle eccezioni".