본문 바로가기
JavaScript

JavaScript - throw / try / catch / finally

by 새발개발JA 2023. 11. 14.
반응형

 

throw / try / catch / finally  이친구들은 참 많이도 접하고 많이도 공부했다.

근데 따로따로 공부했다 🥲 그래서 따로 놀았다

이제는 개념을 한번더 뭉쳐줄 타이밍이다

 

throw, try, catch, finally

 

이 친구들은 전부다 예외 처리 라는 목표을 향해 뭉친 친구들이다

throw예외를 던져(throw)버리고
try 는 예외 없이 잘 실행될 경우(happy case)
catch 는 throw가 던진 에러를 캐치해서 뒷처리를 해주고
finally 는 예외가 있던 없던 그냥 실행된다

 

 

Throw

자바스크립트에서 예외는

- 런타임에러가 일어날 때 발생하거나

- throw 문으로 발생시킬 수도 있다

 

 

예외가 발생하면

인터프리터는 실행을 중단하고 가까운 예외처리기로 넘긴다

(이때 catch 절을 통해 예외처리 실행)

 

 

만약 catch 를  못찾으면

상위로 올라가고 못찾으면 또 상위로 전파된다

끝까지 예외를 찾지못하면 (우리가 아는) error 로 부활한다

 

// throw 는 try 문안에서 실행된다
try {
  if(res.status !== 200) {   // 네트워크 통신할 때 200 정상이 아니면
    throw new Error('원활한 통신이 안됩니다 ❎') // 이런식으로 사용한다
  }
}

 

 

try / catch / finally

이 삼형제는 한꺼번에 살펴보자

 

첫째 try 가 먼저 실행된다

여기서 throw 코드를 넣을 수 있다(하지만 throw 에 의해서만 예외가 발생하는 건 ❎)

여기서 예외가 발생하면 catch 로 넘어간다

 

둘째 catch 가 실행될때 

첫째형이 불렀다 (🥸: "야, 너차례야")

인자로 e(에러)를 받아 뒷처리한다 (🤦‍♂️: 난 맨날 뒷처리만 하는군)

 

셋째 finally 는 무조건 호출이다

첫쨰, 둘째가 뭘하든 관심없는 사춘기 소년 (🤸‍♂️: 어쩔tv 저쩔tv)

두 형들이 위에서 지지고 볶고 할거다하면 유유히 나타나 할일을 한다

 

이 친구는 첫째인 try 가 실행되기만 하면 대기라인에 선다(콜 스택)

try 나 catch 에서 return 하며 빠져나오는 것이 아닌 finally 가 함께 실행된다

finally 문에서 제어를 하게 된다면 상위 전파가 되지 않고 그대로 종료된다 (윗집으로 catch 를 찾아해매는 경우에도)

try {
  // 예외 없이 잘 실행될 경우(happy case)
  // 여기서 예외가 발생하면 아래↓↓↓로 내려보낸다
} catch (e) {
 // throw가 던진 에러를 캐치해서 뒷처리를 해주고
} finally {
 // 예외가 있던 없던 그냥 실행된다
}

 

 

 

 

 

ref : https://webclub.tistory.com/71

 

 

 

반응형

'JavaScript' 카테고리의 다른 글

JavaScript - Argument 란 (Feat. caller, callee)  (2) 2023.11.19
JavaScript - 표현식  (2) 2023.11.17
JavaScript - Call By Value, Call By Reference  (3) 2023.11.09
JavaScript - 연산자  (3) 2023.11.07
JavaScript - 실행 컨텍스트란  (2) 2023.10.31

댓글