Hay varias formas de asegurarse de que su aplicación sea segura.
La forma obvia es envolver los casos try catch
bloques try catch
.
El primer problema con este enfoque es que no puede saber de antemano qué y dónde pueden ocurrir los errores.
El segundo problema es determinar la precisión de la captura de errores. Ejemplo extremo:
- Quiero intentar ver fútbol. ¿Donde debería empezar?
- ¿Por qué mi novia dice que soy de una clase social diferente si básicamente somos de clases sociales similares?
- Mi arrendador y mis compañeros de piso están preocupados porque mi gatito macho de 1 mes se rascó del sofá. ¿Cuál es la solución?
- Tengo un Rajdoot 175CC en Bangalore, ¿debo conservarlo original o modificarlo?
- Quiero comprar una computadora portátil para juegos que tenga una tarjeta gráfica DDR5 y un i7 de quinta generación y mi presupuesto es de 80k. ¿Qué empresa es la mejor y qué modelo?
[nota al margen. Los bloques de código no funcionan como se esperaba en Quora]
El tercer problema es que esta forma de hacer las cosas se volverá bastante engorrosa. Está contaminando su programa con alteraciones innecesarias del flujo de control. El razonamiento de su programa puede volverse bastante difícil con el tiempo.
====================
La siguiente forma interesante de garantizar la seguridad es utilizar algo como MayBe mónada. No entraré en detalles. pero, para una referencia rápida, considere este ejemplo: GetUserInfo("mik").getAccountData("payment").withdraw(100).errors()
Aquí, cada método encadenado tiene un manejo interno de los resultados None
de los pasos anteriores.
Por ejemplo, si no existe dicho usuario, getAccountData
, en lugar de intentar obtener datos (y lanzar un puntero nulo) pasará ese ninguno al siguiente método de cadena.
====================
La tercera forma es usar bibliotecas de validación de datos. Esto es particularmente útil si se trata de diferentes tipos de datos de entrada. Por ejemplo: esquema JSON e hiper-esquema