Синяя птица создает исключение в исходном коде

#node.js #promise #bluebird

#node.js #обещание #bluebird

Вопрос:

Я использую bluebirdjs для приложения nodejs. Он генерирует исключение из своего исходного кода.

Строка : try {throw new Error(); } catch (e) {ret.lastLineError = e;}

Путь: bluebird/js/release/util.js

Строка : 374

Это исключение кажется мне ненужным. Это только генерирует исключение. Рационально ли удалять эту строку?

Тот же код также существует внутри async.js в строке 3.

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

1. catch Блок имеет побочный эффект, поэтому вы не можете удалить его, не ожидая, что некоторые функциональные возможности изменятся.

2. Но блок try всегда будет генерировать исключение. Это что-то вроде if (true){}. Это должно быть похоже на «ret.lastLineError = new Error();». Но этот метод выглядит как ошибка или забыт при публикации.

Ответ №1:

В IE Error объект не будет иметь .stack свойства, если он не проходит через try catch. .stack Свойство необходимо, чтобы видеть, в какой строке и файле находится код.

ret.lastLineError = new Error() поэтому будет работать только в Firefox и Chrome

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

1. Таким образом, он также получит стек из throw , а не из new Error , не так ли?