[ES6+] try catch finally


await를 사용하면서 try catch를 사용하는법을 배워보자

try catch는 자바, 파이썬 등의 언어에서 사용되던 개념인데 자바스크립트에도 추가 되었다

const getMoviesAsync = async () => {
  try{
    const response = await fetch("https://yts.am/api/v2/listmovies.json");
    const json = await response.json();
  } catch(e){
    console.log(e);
  }
}
getMoviesAsync();

에러를 확인하기 위해 받아올 url을 변경해본다 ( list_movies » listmovies)

에러를 뿜어낸다

catch 안의 에러는 첫째 둘째 … 상관없이 발생한 어떤 에러든 다 잡아낸다

그러니 .then() .catch() 역할을 await 하나로 다 하게 되니 엄청 가독성이 좋아진다..

진짜 좋을듯!!!

const getMoviesAsync = async () => { 에서 async를 지우면

await is only valid in async function 이라는 에러를 뿜는다

finally 는 그냥 똑같이 catch다음에 적어주면 된다(아래 코드)

const getMoviesAsync = async () => {
  try{
    const response = await fetch("https://yts.am/api/v2/listmovies.json");
    const json = await response.json();
  } catch(e){
    console.log(e);
  } finally {
  	console.log("we're done!");
  }
}
getMoviesAsync();



만약 await 의 에러가 아니라 try 블럭 안의 err를 발생시키면 catch가 잡을 수 있을까?

ㅇㅇ당근

const getMoviesAsync = async () => {
  try{
    const response = await fetch("https://yts.am/api/v2/listmovies.json");
    const json = await response.json();
    throw Error("i'm hungry");
  } catch(e){
    console.log(e);
    //Error: i'm hungry
  } finally {
  	console.log("we're done!");
  	//we're done!
  }
}
getMoviesAsync();







노마드코더의 ‘ES6의 정석’을 듣고 정리 =)




© 2018. by sora

Powered by sora