Deve-se evitar throw
erros como a maneira de transmitir condições de erro nos aplicativos.
A throw
declaração deve ser usada apenas "Para que isso nunca aconteça, bata e queime. Não se recupere de forma elegante"
try catch
no entanto, é usado em situações em que objetos host ou ECMAScript podem gerar erros.
Exemplo:
var json
try {
json = JSON.parse(input)
} catch (e) {
// invalid json input, set to null
json = null
}
As recomendações na comunidade node.js são que você transmite erros nos retornos de chamada (porque os erros ocorrem apenas para operações assíncronas) como o primeiro 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
})
Também há outros problemas, como o try / catch é muito caro e é feio e simplesmente não funciona com operações assíncronas.
Portanto, como as operações síncronas não devem gerar um erro e não funcionam com operações assíncronas, ninguém usa try catch, exceto os erros gerados pelos objetos host ou pelo ECMAScript
While in java or *any other language* it is mandatory to have error handling...
- Na verdade não. Java, sim, mas há muitas linguagens que não insistem em tentar pegar (como C #).