Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 반복문
- GoingBus
- 개발자 회고록
- 코테
- 자바
- 코딩테스트
- map
- 리눅스마스터 1급 정리
- 연습문제
- 스프링 컨테이너
- Memoir
- 백준 java
- Kotlin
- java 백준 1차원 배열
- Java
- Linux
- 리눅스
- 카카오
- 리눅스마스터1급
- 고잉버스
- 백준 javascript
- 월간코드챌린지
- 문자열
- 자바스크립트 코딩의 기술
- 스프링 빈
- 프로그래머스
- JavaScript
- toCharArray
- 명령어
- 리눅스마스터 3과목
Archives
- Today
- Total
hoon's bLog
Javascript 예외 처리 try catch, exception 본문
반응형
예외(exception)
- 프로그램이 실행 중에 발생하는 런타임 오류를 의미
- 이러한 예외가 발생하지 않도록 미리 예방하는 것도 중요하지만, 발생한 예외를 처리하는 방법 또한 매우 중요
예외 발생
- 예외를 발생시킨다는 것은 명시적으로 오류를 발생시킨다는 의미뿐만 아니라 예외 상황을 알림
- 자바스크립트에서는 throw 키워드를 사용하여 예외를 발생
throw 표현식;
※ 표현식에는 예외 코드를 나타내는 숫자나 오류 메시지를 담고 있는 문자열, Error 객체 등
예외 처리(exception handling)
자바스크립트에서는 프로그램이 실행되는 도중 발생하는 예외를 처리하기 위해 try / catch / finally 문을 사용
try {
// 예외를 처리하길 원하는 실행 코드;
} catch (ex) {
// 예외가 발생할 경우에 실행될 코드;
} finally {
// try 블록이 종료되면 무조건 실행될 코드;
}
try 블록 : 기본적으로 맨 먼저 실행되는 코드이며, 여기에서 발생한 예외는 catch 블록에서 처리
catch 블록 : try 블록에서 발생한 예외 코드나 Error 객체를 인수로 전달받아 처리
finally 블록 : 이 블록은 try 블록에서 예외가 발생하건 안 하건 맨 마지막에 무조건 실행
※ catch 블록과 finally 블록은 선택적인 옵션으로 반드시 사용할 필요 X
Error 객체
자바스크립트에서는 런타임 오류가 발생할 때마다 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 프로퍼티는 오류 메시지를 저장함.
}
}
strict 모드
- ECMAScript 5에서 처음으로 소개된 strict 모드는 자바스크립트 코드에 더욱 엄격한 오류 검사를 적용
- strict 모드는 스크립트나 함수의 맨 처음에 "use strict" 지시어를 사용하여 선언 가능
- 이렇게 선언된 strict 모드는 해당 블록의 코드를 strict 모드 문법에 따라 엄격하게 검사
"use strict" // 전체 스크립트를 strict 모드로 설정함.
try {
num = 3.14; // 선언되지 않은 변수를 사용했기 때문에 오류를 발생시킴.
} catch (ex) {
document.getElementById("text").innerHTML = ex.name + "<br>";
document.getElementById("text").innerHTML += ex.message;
}
이렇게 선언된 strict 모드는 해당 블록의 코드를 strict 모드 문법에 따라 엄격하게 검사한다!
str = "실수!"; // 선언되지 않은 변수를 사용했지만 자동으로 전역 변수로 선언됨.
document.getElementById("noStrict").innerHTML = str + "<br>";
function StrictBlock() {
"use strict" // 함수 블록만을 strict 모드로 설정함.
try {
num = 123 // 선언되지 않은 변수를 사용했기 때문에 오류를 발생시킴.
} catch (ex) {
document.getElementById("funcStrict").innerHTML = ex.name + "<br>";
document.getElementById("funcStrict").innerHTML += ex.message;
}
}
StrictBlock();
- 위의 예제에서 strict 모드가 아닌 전역 영역에서는 선언되지 않은 변수를 사용해도 자동으로 전역 변수로 인식
- strict 모드로 선언된 함수 블록에서는 선언되지 않은 변수를 사용하면 오류를 발생
strict 모드의 특징
- 자바스크립트의 strict 모드는 기존 자바스크립트 언어의 일부 기능을 제한한 문법을 사용
- 또한, 몇 가지 중요한 기능을 수정하여 강력한 오류 검사와 함께 향상된 보안 기능을 제공
strict 모드 문법
변수 | 선언되지 않은 변수나 객체를 사용할 수 없음. |
eval() | 함수 내에서 선언된 변수는 외부에서 사용할 수 없음. |
프로퍼티 | 읽기 전용 프로퍼티에는 대입할 수 없음, 한 프로퍼티를 여러 번 정의할 수 없음. |
함수 | - 함수를 구문이나 블록 내에서 선언할 수 없음 - 매개변수 매개변수의 이름이 중복되어서는 안됨 - arguments 객체의 요소 값을 변경할 수 없음. |
문자열 | "eval"과 "arguments"는 사용할 수 없음. |
8진수 | 숫자 리터럴에 8진수 값을 대입할 수 없음. |
this | this 포인터가 가르키는 값이 null이나 undefined인 경우 전역 객체로 변환되지 않음. |
delete | delete 키워드를 사용할 수 없음. |
with | with 문을 사용할 수 없음. |
예약어 | 다음 예약어들은 사용할 수 없음. (implements, interface, let, package, private, protected, public, static, yield) |
Reference
https://www.tcpschool.com/javascript/js_exception_exception
728x90
반응형
'IT > Javascript' 카테고리의 다른 글
Javascript 자바스크립트 코딩의 기술 1장 변수 할당으로 의도를 표현하라 (1) (0) | 2023.10.26 |
---|---|
Javascript regular expression 정규식 표현 및 사용 (0) | 2023.07.03 |
Javascript 이벤트, 이벤트 리스너 개념 및 사용 (0) | 2023.06.29 |
Javascript BOM 브라우저 객체 모델 사용 (0) | 2023.06.18 |
Javascript 노드 Node 사용법 및 조작 (0) | 2023.06.17 |