Deve-se evitar erros throw
como forma de passar condições de erro nas aplicações.
A declaração throw
deve ser usada apenas "Para que isso nunca aconteça, quebre e queime. Não recupere com elegância de forma alguma"
try catch
no entanto é usado na situação em que objetos do 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 é que você passa erros em 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
})
Há também outros problemas, como try / catch, que são realmente caros e que são feios e que simplesmente não funcionam 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 utiliza o try catch, exceto os erros lançados pelos objetos do host ou o ECMAScript