"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Bluebird Promise를 사용한 비동기 콜백에서 처리되지 않은 예외를 어떻게 처리합니까?

Bluebird Promise를 사용한 비동기 콜백에서 처리되지 않은 예외를 어떻게 처리합니까?

2024년 11월 21일에 게시됨
검색:151

How do you handle unhandled exceptions in asynchronous callbacks with Bluebird promises?

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