자바스크립트에서 에러가 발생하면, 스크립트가 즉시 중단되고 콘솔에 에러가 출력된다.
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
'JavaScript' 카테고리의 다른 글
[스터디] JavaScript Proxy (0) | 2022.10.25 |
---|---|
[스터디] 자바스크립트 모듈 (0) | 2022.10.19 |
[스터디/퀴즈] Class (0) | 2022.10.03 |
[스터디] 객체 프로퍼티 설정 / 프로토타입 상속 (0) | 2022.09.27 |
자바스크립트 호출 스케줄링 (setTimeout / setInterval) (0) | 2022.09.21 |
댓글