Bluebird Promise를 사용한 비동기 예외 처리
Q: Bluebird Promise를 사용한 비동기 콜백에서 처리되지 않은 예외를 처리하는 방법은 무엇입니까?
Bluebird promise는 본질적으로 비동기 콜백에서 발생한 예외를 포착하지 않습니다. domains.
A: Promise 생성자 또는 then() 클로저를 사용하여 예외 처리
비동기 콜백에서 예외를 포착하려면 콜백을 Promise 생성자 또는 then( ) 클로저:
function getPromise(){
return new Promise(function(done, reject){
setTimeout(function(){
throw new Error("AJAJAJA");
}, 500);
}).then(function() {
console.log("hihihihi");
throw new Error("Oh no!");
});
}
사용자 정의 비동기 콜백에서 발생하는 것을 방지
사용자 정의 비동기 콜백에서 직접 예외를 발생시키지 마십시오(Promise 콜백 외부). 대신, 주변 Promise를 거부하세요:
function getPromise(){
return new Promise(function(done, reject){
setTimeout(done, 500);
}).then(function() {
console.log("hihihihi");
reject(new Error("Oh no!"));
});
}
예제
프라미스 생성자 사용:
var p = getPromise();
p.then(function(){
console.log("Yay");
}).error(function(e){
console.log("Rejected",e);
}).catch(Error, function(e){
console.log("Error",e);
}).catch(function(e){
console.log("Unknown", e);
});
출력:
Error [Error: Oh no!]
이 접근 방식을 사용하면 예외를 포착하고 적절하게 처리하여 애플리케이션 충돌을 방지할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3