#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
, не так ли?