A diferencia de las excepciones, las aserciones no pueden ser elevadas ni controladas. El uso de una aserción en lugar de una excepción es una mezcla entre filosofía de trabajo y sentido común: las excepciones podrían darse inesperadamente durante la ejecución de un programa (por ejemplo, que la conexión con la base de datos se caiga), mientras que las aserciones nunca deberían darse. Si una aserción se dispara, es porque ha habido un error en la programación. Por ello, no merece la pena capturarla y continuar ejecutando, sino simplemente finalizar el programa para evitar efectos colaterales; en todo caso, la acción de la aserción debería asegurar que el equipo de desarrollo del programa recibe esa información.
Si bien las excepciones pueden saltar en tiempo de ejecución, todas las aserciones que se disparen deberían hacerlo en fase de pruebas o, en todo caso, en las versiones no finalizadas (alfa, beta…). Esto es debido a que los entornos de desarrollo actuales suelen tener una versión "debug" y otra "release"; por defecto, la segunda (que es la que conforma el entregable al cliente) no tiene en cuenta las aserciones.