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 |
댓글