La aserción se utiliza para verificar si se cumple una condición (precondición, condición posterior, invariantes) y ayudar a los programadores a encontrar los agujeros durante la fase de depuración.Cuál es la estrategia si falla la aserción
Por ejemplo,
void f(int *p)
{
assert(p);
p->do();
}
Mi pregunta es qué tenemos que asumir la condición no se pudo cumplir en el modo de disparo y manejar el caso en consecuencia?
void f(int *p)
{
assert(p);
if (p)
{
p->do();
}
}
Después de todo, la afirmación significa que la condición que prueba NUNCA debe ser falsa. Pero si, si no lo verificamos y falla, el programa se bloquea. Suena como un dilema. ¿Cómo lidian ustedes con eso?
¿Duplicado de [diseño por pruebas de contrato por afirmación o por excepción?] (Http://stackoverflow.com/questions/117171/design-by-contract-tests-by-assert-or-by-exception) (Hay una buena discusión sobre los pros y los contras de los diferentes enfoques, no existe realmente un consenso sobre el tema) Ver también [¿Cuándo deberían permanecer las afirmaciones en el código de producción?] (http: // stackoverflow.com/questions/17732/when-should-assertions-stay-in-production-code) –
No creo que alguna vez haya visto una pregunta obtener tantas respuestas en tan poco tiempo. –
Sí, y cada uno se contradice :) – EboMike