Как поймать исключение из вызывающего файла?

#javascript #node.js #exception

#javascript #node.js #исключение

Вопрос:

У меня есть следующий код Javascript

main.js

 'use-strict';
const assert = require('assert');
var r = require('./index.js');
async function fun() {
    try {
    r.start();
} catch (e) {console.log(e);}
}
fun();
 

index.js

 'use-strict';
var assert = require('assert');
async function start() {
   
    assert.ok(1==0);
}

exports.start = start;
 

Теперь созданное исключение index.js НЕ перехватывается main.js , почему так? Есть ли какой — нибудь способ , которым я могу облегчить это?

У меня есть ряд функций в разных файлах, вызываемых из main.js и я не хочу ставить try / catch во все из них.

Комментарии:

1. Асинхронный вызов функции возвращает обещание, чтобы вы могли обработать ошибку в catch блоке обещания.

2. @rogu-smith Я новичок в javascript, не могли бы вы уточнить со ссылкой на код?

Ответ №1:

Если вы измените main.js к этому, будем надеяться, ошибка будет перехвачена, поскольку функция будет ждать разрешения обещания и выдаст ошибку в main.js .

main.js

 'use-strict'
const assert = require('assert')
const r = require('./index.js')
const fun = async () => {
  try {
    // Wait for the promise to resolve
    await r.start()
  } catch (error) {
    console.log(error)
    throw new Error(`[main.js] - Error was thrown ${error}`)
  }
}
fun()
 

Комментарии:

1. Я изменил свой main.js к упомянутому, но, похоже, это не работает, я что-то упускаю?

2. Что происходит? Вы получаете какие-либо ошибки?