Come posso descrivere un metodo che non ha effetti collaterali se viene generata un'eccezione durante l'esecuzione?

StackOverflow https://stackoverflow.com/questions/283487

  •  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.

È stato utile?

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".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top