1. 개요
예외(exception)란 프로그램이 실행 중에 발생하는 런타임 오류를 말한다. 사전에 런타임 오류를 방지하는 것이 좋겠지만, 이미 발생한 예외 동작에 대해서 처리하는 것 또한 중요하다. 예외를 발생시켜 예외 상황을 판단할 수 있으며 자바스크립트는 throw 표현식;을 사용한다. 표현식에는 예외 코드를 나타내는 숫자나 오류 메시지, Error 객체 등이 올 수 있다.
2. 예외 처리(exception handling)
try {
예외를 처리하길 원하는 실행 코드;
} catch (ex) {
예외가 발생할 경우에 실행될 코드;
} finally {
try 블록이 종료되면 무조건 실행될 코드;
}
1) try 블록: 기본적으로 맨 먼저 실행되는 코드이며, 여기에서 발생한 예외는 catch 블록에서 처리될 수 있다.
2) catch 블록: try 블록에서 발생한 예외 코드나 Error 객체를 인수로 전달받아 그 처리를 담당한다.
3) finally 블록: 이 블록은 try 블록에서 예외가 발생하건 안 하건 맨 마지막에 무조건 실행된다.
try는 if로 보자면 조건과 같은 것으로 반드시 포함되는 사항이다. 다만 뒤에오는 catch와 finally는 반드시 사용되는 것은 아니다. 둘 중에 1개만 사용되거나 2개 모두 사용된다.
3. Error 객체
var btn = document.getElementById("throwExBtn"); // 아이디가 "throwExBtn"인 요소를 선택함.
btn.addEventListener("click", throwEx); // 선택한 요소에 click 이벤트 리스너를 등록함.
function throwEx() {
try {
throw new Error("직접 발생시킨 오류입니다!"); // Error 객체를 사용해 명시적으로 오류를 발생시킴.
} catch (ex) { // 발생된 오류를 매개변수 ex로 접근할 수 있음.
document.getElementById("text").innerHTML = ex.name + "<br>"; // name 프로퍼티는 오류의 타입을 저장함.
document.getElementById("text").innerHTML += ex.message; // message 프로퍼티는 오류 메시지를 저장함.
}
}
4. Strict 모드
Strict 모드는 ECMAScript 5에서 처음 소개 되었으며 자바스크립트 코드에 더욱 엄격한 오류 검사를 적용해 준다. strict 모드는 스크립트나 함수의 맨 처음에 "use strict" 지시어를 사용하여 선언할 수 있다.
"use strict" // 전체 스크립트를 strict 모드로 설정함.
try {
num = 3.14; // 선언되지 않은 변수를 사용했기 때문에 오류를 발생시킴.
} catch (ex) {
document.getElementById("text").innerHTML = ex.name + "<br>";
document.getElementById("text").innerHTML += ex.message;
}
strict 모드는 자바스크립트의 오류, 즉 예외 상황을 방지하기 위해 사용할 수 있으며 각 항목 별로 다음과 같은 기준에 의해 검사를 진행한다.
대상 | 제한 사항 |
변수 | 선언되지 않은 변수나 객체를 사용할 수 없음. |
eval() 함수 내에서 선언된 변수는 외부에서 사용할 수 없음. | |
프로퍼티 | 읽기 전용 프로퍼티에는 대입할 수 없음. |
한 프로퍼티를 여러 번 정의할 수 없음. | |
함수 | 함수를 구문이나 블록 내에서 선언할 수 없음. |
매개변수 | 매개변수의 이름이 중복되어서는 안됨. |
arguments 객체의 요소 값을 변경할 수 없음. | |
문자열 | 문자열 "eval"과 "arguments"는 사용할 수 없음. |
8진수 | 숫자 리터럴에 8진수 값을 대입할 수 없음. |
this | this 포인터가 가르키는 값이 null이나 undefined인 경우 전역 객체로 변환되지 않음. |
delete | delete 키워드를 사용할 수 없음. |
with | with 문을 사용할 수 없음. |
예약어 | 다음 예약어들은 사용할 수 없음. (implements, interface, let, package, private, protected, public, static, yield) |
'JavaScript > 기본 이론' 카테고리의 다른 글
Chapter 19. 표준 객체 (0) | 2021.12.07 |
---|---|
Chapter 18. 정규 표현식 (데이터의 문자열 검색 및 추출) (0) | 2021.12.06 |
Chapter 16. 이벤트 (0) | 2021.12.02 |
Chapter 15. 브라우저 객체 모델 (BOM) (0) | 2021.12.01 |
Chapter 14. Document Object Model (0) | 2021.11.30 |