У меня есть опыт работы с Java разработчиком, и я довольно новичок в JavaScript / TypeScript.
Существует ли стандартный способ для управления и сохранения причины ошибки в JavaScript / TypeScript?
Моя цель - получить полную трассировку стека, когда я помещаю ошибку в другую; немного как с Java Трассировка стека исключений:
Message of exception 1
...
Caused by: Message of exception 2
...
Caused by: Message of the root exception
Я пытаюсь этот код, но err1
не сохраняет ссылку err2
:
// CODE
try {
try {
throw new Error("Error no2");
} catch (err2) {
console.log("========================================");
console.log(err2);
throw new Error("Error no1");
}
} catch (err1) {
console.log("========================================");
console.log(err1);
}
// CONSOLE OUTPUT
$ node test.ts
========================================
Error: Error no2
at Object.<anonymous> (/tmp/test.ts:3:15)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11
========================================
Error: Error no1
at Object.<anonymous> (/tmp/test.ts:7:15)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11
Кроме того, я не нашел ни одного свойства с именем cause
в классе Error. Есть свойство stack
, но я думаю, что менять его - плохая практика.
Спасибо!