Históricamente han existido varias maneras de poder determinar cuando una secuencia de código es inválida o está presentando un mal funcionamiento; siendo unas más reactivas que otras, más defensivas.