Детализация трассировки стека ошибок в узле и экспресс

#javascript #node.js #express

Вопрос:

Допустим, у меня есть следующие функции в проекте, распределенные в разных файлах и используемые несколькими родительскими функциями.

Используя VError библиотеку, я могу просматривать трассировку стека каждой отдельной ошибки функций, что приводит меня к ошибке самого низкого уровня — уровень 1.

Сейчас я внедряю обработку ошибок в свой проект — мой вопрос: полезно ли фиксировать дорожку стека до такого уровня детализации и записывать ее в журналы?

Экспресс/Узел покажет мне ошибку самого низкого уровня из коробки.

Примечание: Насколько показывает мое исследование, я должен выдавать только те ошибки, которые сами по себе не могут быть обработаны с пользой — обработка этих ошибок на более высоком уровне.

 const VError = require("VError");  exports.f1 = () =gt; {  try {  nofunc()  } catch (error) {  throw new VError('Faliure - Level 1');  } }  exports.f2 = () =gt; {  try {  this.f1()  } catch (error) {  throw new VError(error, 'Faliure Level 2');  } }  exports.f3 = () =gt; {  try {  this.f2()  } catch (error) {  throw new VError(error, 'Faliure - Level 3');  } }  exports.f4 = () =gt; {  try {  this.f3()  } catch (error) {  console.log(error)  } }  this.f4()  

Пример ошибки

 VError: Faliure - Level 3: Faliure Level 2: Faliure - Level 1  at Object.exports.f3 (/errors.test.js:23:15)  at Object.exports.f4 (/errors.test.js:29:14)  at Object.lt;anonymousgt; (/errors.test.js:35:6)  at Module._compile (node:internal/modules/cjs/loader:1108:14)  at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)  at Module.load (node:internal/modules/cjs/loader:973:32)  at Function.Module._load (node:internal/modules/cjs/loader:813:14)  at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)  at node:internal/main/run_main_module:17:47 {  jse_shortmsg: 'Faliure - Level 3',  jse_cause: VError: Faliure Level 2: Faliure - Level 1  at Object.exports.f2 (/errors.test.js:15:15)  at Object.exports.f3 (/errors.test.js:21:14)  at Object.exports.f4 (/errors.test.js:29:14)  at Object.lt;anonymousgt; (/errors.test.js:35:6)  at Module._compile (node:internal/modules/cjs/loader:1108:14)  at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)  at Module.load (node:internal/modules/cjs/loader:973:32)  at Function.Module._load (node:internal/modules/cjs/loader:813:14)  at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)  at node:internal/main/run_main_module:17:47 {  jse_shortmsg: 'Faliure Level 2',  jse_cause: VError: Faliure - Level 1  at Object.exports.f1 (/errors.test.js:7:15)  at Object.exports.f2 (/errors.test.js:13:14)  at Object.exports.f3 (/errors.test.js:21:14)  at Object.exports.f4 (/errors.test.js:29:14)  at Object.lt;anonymousgt; (/errors.test.js:35:6)  at Module._compile (node:internal/modules/cjs/loader:1108:14)  at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)  at Module.load (node:internal/modules/cjs/loader:973:32)  at Function.Module._load (node:internal/modules/cjs/loader:813:14)  at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12) {  jse_shortmsg: 'Faliure - Level 1',  jse_info: {}  },  jse_info: {}  },  jse_info: {} }