본문 바로가기
JavaScript

자바스크립트의 에러 (에러객체 / try...catch)

by 복숭아 우유씨 2022. 10. 11.

자바스크립트에서 에러가 발생하면, 스크립트가 즉시 중단되고 콘솔에 에러가 출력된다.

 

Error 객체

  • 런타임 오류 발생시 JS는 에러 객체를 생성하고 이를 던진다.
  • 에러 객체에는 에러에 대한 상세 내용이 담겨있다.

 1. 생성자

  • Error( )
    - new Error( )
    - 매개변수로 message, fileName, lineNumber를 넣을수도 있다.(옵셔널)
    - 함수로 호출할 수도 있다.

 2. 인스턴스 속성

  • name
    - 오류 타입 설명을 위한 이름 (초기값: Error)
  • message
    - 오류 메시지, 사람이 읽을 수 있는 오류 설명
  • stack
    - 스택 추적을 위한 비표준 속성
    - 디버깅 목적으로 주로 사용됨

 3. 오류 타입

name 설명
SyntaxError 문법적으로 유효하지 않는 코드 해석시 발생
ReferenceError 존재하지 않는 변수 참조시 발생
RangeError 어떤 값이 집합에 없거나 허용되는 범위가 아닐때 발생
TypeError 변수나 매개변수가 유효한 자료형이 아니여서 연산할 수 없을 때 발생
URIError 전역 URI 핸들링 함수가 잘못 사용되었을 때 
EvalError 전역 eval( ) 함수에 관한 오류, 현재는 사용되지 않으나 호환성을 위해 남겨둠

 

에러 핸들링

아래의 구문들로 스크립트가 중지되는 것을 방지하고, 에러를 처리할 수 있다.

 1. throw

throw <error object>
  • 에러를 던질때 사용

 2. try...catch

 try {
 	// 1) 먼저 실행된다.
 	// 2) 에러가 없으면 catch 구문은 무시된다.
 	// 3-1) 에러가 있으면 실행이 중단되고, catch 블록으로 error객체를 던진다.
 } catch(error) {
 	// 3-2) try 블록에서 던진 error 객체를 처리한다.
 }
  • catch 블록에서 처리하지 못한 에러는 다시 던질수 있다. (throw 사용)

 3. finally

try {
	//코드 실행
	//에러가 없을 경우 finally 블록을 실행한다.
	//에러가 있을경우 실행 중지후, catch블록으로 에러를 던진다.
} catch(error) {
	//에러 핸들링
	//처리 못한 에러는 throw로 다시 던질수 있다.
	//실행 후 finally 블록을 실행한다.
} finally {
	//무조건 실행된다.
}
  • 실행 결과와 상관없이 실행하고 싶은 경우에 사용한다.
  • try...catch  구문에서  return을 사용해도 finally는 무조건 실행된다.
  • catch없이 try...finally로도 사용할 수 있다.

 

 

 


References...

 

1 ) https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Error

2) https://ko.javascript.info/try-catch

3) https://ossam5.tistory.com/241

4) https://velog.io/@sosoyim/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%97%90%EB%9F%AC-%EC%83%9D%EC%84%B1-%EA%B3%BC%EC%A0%95%EA%B3%BC-NativeError-%EC%98%88%EC%8B%9C

 

 
 

 

댓글