-
try catch의 함정JavaScript 2023. 11. 5. 17:21
try catch를 사용하면, 예상할 수 있는 여러 에러 상황을 처리할 수 있다.
이말인 즉슨 웹페이지에 에러가 발생해도 에러를 바로 처리하기 때문에 작동에 문제가 생기지 않게 해줄 수 있다.
다만, try catch를 사용하여 예기치 못한 상황이 발생할 수도 있는데. 왜냐하면 기본적으로 에러 상황을 바로 처리하여 에러가 발생하지 않았던 것 처럼 자바스크립트가 실행된다는 점이다.
예를 들어, redux saga를 사용중인 앱에 api 호출 부분에서 try catch를 사용해버리면, redux saga에서 실패 시 처리 부분에 진입하는 경우의 수가 사라져버린다.
try catch로 곧바로 API 호출 실패에 대한 처리를 해버렸기 때문에 redux saga는 이 API 호출이 성공된 것으로 해석해버리고 Success에 진입해버린다.
이렇듯, 에러를 발생시킬 필요가 있고 이를 사용해야하는 상황에서는 try catch가 적합하지 않을 수 있다.
const functionAlwaysSuccess = async () => { try { const res = await axios.get("~url~"); return res.data; } catch(e) { console.err(e); } }위의 functionAlwaysSuccess 함수는 외부에서 호출했을 때, 늘 에러가 나지 않는. 늘 성공하는 함수이다.
따라서, 위의 함수를 redux saga와 함께 사용할 때 redux saga의 Failure 로직에는 진입할 수 없다.
'JavaScript' 카테고리의 다른 글
Web animations API 사용하기 (animate) (1) 2023.12.11 사이트에서 나가시겠습니까? 묻기 (1) 2023.11.12 await와 then 함께쓰기? (0) 2023.10.29 MutationObserver 사용하기 (DOM을 구독하여 알림 주기) (0) 2023.10.28 자바스크립트 동적으로 객체 생성하기 (Computed Property Names) (0) 2023.10.05