Как часть API Node.js/Express Я разрабатываю, я создал собственный обработчик ошибок, который позволяет мне бросать определенные ошибки при необходимости, например. BadRequest или NotFound и т. Д.Node.js - исключение исключения в цепочке обещаний ES6
Проблема возникает, когда я хочу бросить в цепочку обещаний. Например:
db.doSomethingAsync().then(data => {
if(data.length === 0){
throw new errors.ResourceNotFound({ resource: "foo" });
}
});
После большого чтения по теме, я вижу, что эта ошибка будет поглощена обещанием и, следовательно, вызывает необработанный отказ Promise.
Я знаю, что могу отклонить, но я не уверен, как я могу обработать конкретную ошибку (а не catchall on reject, которую я не хочу).
Кроме того, чтобы отказаться, мне не нужно было бы создавать новое обещание внутри моей цепи обещаний? Это кажется грязным.
Может ли кто-нибудь посоветовать, как обращаться с конкретным исключением в цепочке обещаний?
В обещании цепи, вы возвращаете ошибки либо делать 'throw' или возврат отклоненного обещания. Либо изменит цепочку обещаний на отклоненное состояние, которое затем вы сможете обрабатывать на более высоком уровне в вашей цепочке обещаний. Где именно в цепочке для обработки ошибки зависит то, что вы пытаетесь выполнить. Но вы ДОЛЖНЫ обрабатывать отказ в цепочке обещаний где-то. Исключения в асинхронном режиме не могут быть пойманы где-либо еще, поэтому они служат мало полезной цели, не обрабатывая их где-то, а затем решают, что делать, когда это условие происходит. – jfriend00