-
[자바스크립트] try catch 문을 통한 에러 처리javascript 2021. 5. 3. 14:10반응형
try { ... 코드를 실행 ... } catch(e) { ... 에러 핸들링 ... } finally { ... 항상 실행 ... }
본래 코드를 실행중 에러가 나면 스크립트는 중단 된다 그러나 try catch 문을 사용할 경우
에러에 의해 스크립트가 중단되는 것을 막을수 있고 경우에 따라 적합한 행동을 취할수 있다.
사용법은 위와 같이 간단하다.
일반적인 상황에서 try 안의 코드가 실행이 되고 try 블락 안에서 에러가 나지 않는 경우
finally 블락의 코드가 실행된 이후에 다음 코드가 진행이 된다.
만약에 try 문 안에서 에러가 발생했다면 try 문 안에서 코드는 중단되고 catch 문 안의 코드가 실행이된다.
그리고 catch 문의 코드 가 종료시 finally block 으로 넘어가 진행이 되게 된다.
try 문 안에서 발생한 오류는 err객체를 생성하고 catch 문의 인자로 사용된다.
자바스크립트는 코드를 읽는 단계와 코드를 실행하는 단계로 나눌수 있는데
읽는단계에서 발생하는 오류를 parse-time error 라고 하고 실행하는 단계에서의 오류를 runtime-error 라고 한다.
try catch 문에서 에러를 인식하는 경우는 runtime error 를 의미하기 때문에
문법접으로 잘못되거나 하는 parse time error 는 try catch 문으로 예외 처리를 할수없다
또한 try catch 문의 경우 동기적으로 작동하기 때문에 아래와 같은 코드는 setTimeout 안의 함수에서 발생하는 에러를 파악할수 없게 됩니다
try { setTimeout(function() { noSuchVariable; // 스크립트는 여기서 죽습니다. }, 1000); } catch (e) { alert( "작동 멈춤" ); }
setTimeout(function() { try { noSuchVariable; // 이제 try..catch에서 에러를 핸들링 할 수 있습니다! } catch { alert( "에러를 잡았습니다!" ); } }, 1000);
이러한 에러는 주로 네트워크 요청에 의한 에러(데이터처리과정) 를 예로 들수 있다.
우리는 네트워크 요청과 같은 코드에는 비동기처리를 해주게 된다.
그때 promise 객체를 이용할수도 있고 async & await 문법을 사용할수 있는데
promise 객체를 이용할 경우 catch 라는 메서드를 통해서 에러처리를 따로 해줄수가 있다
그러나 async & await 문법의 경우에는
try catch문을 사용한다면 유용하다.
'javascript' 카테고리의 다른 글
[자바스크립트]데이터 자료형 에 대하여 (0) 2021.05.22 [javascript] deep copy / shallow copy (0) 2021.05.10 [자바스크립트] 가비지 컬렉션 (0) 2021.04.27 [자바스크립트] 이벤트 루프에 대해서 (0) 2021.04.26 [javascript] promise 에 대하여 (0) 2021.04.23