Por Abrahams tenemos 3 tipos de excepciones:garantía excepción fuerte VS garantía excepción básica
- nothrow
- garantía básica excepción
- excepción fuerte garantía
medios básicos (Corrija si estoy equivocado) que los invariantes se conservan, por ejemplo, que las invariantes del componente se conservan, y no se filtran recursos, wh Es fuerte que la operación se haya completado con éxito o haya arrojado una excepción, dejando el programa en estado exactamente como estaba antes de que comenzara la operación.
¿Qué significa que se conservan invariantes? que si tengo un valor válido en una de mis variables, entonces no tendría (tome por ejemplo un puntero) un
NULL
?En referencia a la garantía de excepción fuerte, ¿significa que todas mis variables almacenarían exactamente los mismos valores antes de que se lanzara la excepción?
por ejemplo:
int main()
{
int j = 1;
int *p = &j;
// do some stuff
j = 2;
throw 1;
}
Luego, después de lo tiro, j
sería mantener el valor 2
o 1
?
Saludos
¿Qué referencia estás citando ??? – paulsm4
@ paulsm4: Wikipedia 'http: // en.wikipedia.org/wiki/Exception_guarantees' – ron
Dave Abrahams lo explica con mucho más detalle en: [** Exception-Safety in Generic Components **] (http: // www.boost.org/community/exception_safety.html). El artículo responde su pregunta de forma bastante convincente en la sección: *** Una base contractual para la excepción-seguridad *** –