A menudo, cuando escribo una función, quiero asegurarme de que las entradas sean válidas para detectar dichos errores lo antes posible (creo que se denominan condiciones previas). Cuando falla una condición previa, siempre he lanzado una excepción. Pero estoy empezando a dudar si esta es la mejor práctica y si no, las afirmaciones serían más apropiadas.
Entonces, ¿cuándo debo hacer qué? ¿Cuándo es apropiado usar una aserción y cuándo es apropiado lanzar una excepción?