try catch promise.reject

1792 단어
갑작스런 기상이 떠올라 다음 코드를 테스트했는데,
function f() {
    try{
        Promise.reject('   ');
    }catch(e){
        console.log('e',e);
    }
}
f();

결과적으로catch가 없으면 나는 도대체 왜 그런지 모르겠다.

Promise 때문에.Reject는 비동기식입니까?


나는 다른 사람에게 물었다. 어떤 사람이 나에게 비동기 때문이라고 말했지만, 나는 이 원인이 아니라고 생각한다. 왜냐하면 프로미스 때문이다.Reject는 Rejected 프로젝트로 바로 돌아갑니다
The Promise.reject(reason) method returns a Promise object that is rejected with the given reason.
그리고 샅샅이 뒤져볼게요...
####catch는 언제 들어가요?
the catch block is entered when any exception is thrown. try 안에throw(또는 은식throw)가 있어catch에 들어갈 수 있습니다.그럼 쉬워요.
 function f() {
    try{
        throw Promise.reject('   ');
    }catch(e){
        console.log('e',e);
    }
}
f();

catch에 들어갔습니다. 출력은 다음과 같습니다.
e Promise {  '   ' }

#### async await를 더하면?
async function f() {
    try{
        await Promise.reject('   ');
    }catch(e){
        console.log('e',e);
    }
}
f(); 
e    

왜 이게 캣츠에 들어갔을까,
If the Promise is rejected, the await expression throws the rejected value.
다시 말하면, await Promise.reject('내가 잘못했어');throw의'내가 잘못했어'에 해당한다.다음 프로젝트가 리셋된 후에 await는throw 작업을 할 것입니다.예를 들면 JSON.parse가 잘못되었을 때도throw를 진행하고,
async function f() {
    try{
        // await Promise.reject('   ');
        // throw '   ';
        JSON.parse('fsafsd');
    }catch(e){
        console.log('e',e);
    }
}
f();
e SyntaxError: Unexpected token s in JSON at position 1

Throws a SyntaxError exception if the string to parse is not valid JSON.

좋은 웹페이지 즐겨찾기