[ES6+] try catch finally
in JavaScript
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의 정석’을 듣고 정리 =)