Frequentemente, quando escrevo uma função, quero garantir que as entradas sejam válidas para detectar esses erros o mais cedo possível (acredito que sejam chamados de pré-condições). Quando uma pré-condição falha, sempre lancei uma exceção. Mas estou começando a duvidar se essa é a melhor prática e, se não, as afirmações seriam mais apropriadas.
Então, quando devo fazer o que: quando é apropriado usar uma asserção e quando é apropriado lançar uma exceção?