Se deben evitar throw
errores como la forma de pasar las condiciones de error en las aplicaciones.
La throw
declaración solo debe usarse "Para que esto nunca ocurra, choque y arda. No se recupere elegantemente de ninguna manera"
try catch
sin embargo, se usa en situaciones en las que los objetos host o ECMAScript pueden arrojar errores.
Ejemplo:
var json
try {
json = JSON.parse(input)
} catch (e) {
// invalid json input, set to null
json = null
}
Las recomendaciones en la comunidad node.js es que pase errores en devoluciones de llamada (porque los errores solo ocurren para operaciones asincrónicas) como primer argumento
fs.readFile(uri, function (err, fileData) {
if (err) {
// handle
// A. give the error to someone else
return callback(err)
// B. recover logic
return recoverElegantly(err)
// C. Crash and burn
throw err
}
// success case, handle nicely
})
También hay otros problemas, como try / catch, que es realmente costoso y feo, y simplemente no funciona con operaciones asincrónicas.
Entonces, dado que las operaciones síncronas no deberían arrojar un error y no funciona con operaciones asíncronas, nadie usa try catch excepto los errores lanzados por objetos host o ECMAScript
While in java or *any other language* it is mandatory to have error handling...
- Realmente no. Java, sí, pero hay muchos lenguajes que no insisten en try-catch (como C #).