Слід уникати throw
помилок як способу передачі умов помилок у додатках.
throw
Заява має бути використано тільки «Для цього не повинно статися, аварії і спалити. Чи не відновлюйте елегантно в будь-якому випадку»
try catch
однак використовується в ситуації, коли хост-об'єкти або ECMAScript можуть видаляти помилки.
Приклад:
var json
try {
json = JSON.parse(input)
} catch (e) {
// invalid json input, set to null
json = null
}
Рекомендації у спільноті node.js полягають у тому, що ви передаєте помилки у зворотному звороті (оскільки помилки трапляються лише для асинхронних операцій) в якості першого аргументу
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
})
Є й інші проблеми, такі як пробувати / ловити - це дуже дорого, це некрасиво, і він просто не працює з асинхронними операціями.
Отже, оскільки синхронні операції не повинні видавати помилки, і це не працює з асинхронними операціями, ніхто не використовує спробу вилову, крім помилок, викинутих об'єктами хосту або ECMAScript
While in java or *any other language* it is mandatory to have error handling...
- Не зовсім. Java, так, але є багато мов, які не наполягають на пробному лові (як, наприклад, C #).