자바스크립트에서 오류를 처리하는 방법은 크게 네 가지로 구분됩니다.
try 명령문: 오류가 발생할 가능성이 있는 코드를 실행하기 위해 사용됩니다.
catch 명령문: 오류가 발생했을 때, 그 오류를 어떻게 처리할지 정의합니다.
finally 명령문: 성공적으로 실행되든 오류가 발생하든 관계없이 반드시 실행될 코드를 정의합니다.
throw 명령문: 사용자가 직접 오류를 발생시키기 위해 사용됩니다.
오류의 유형과 예
자바스크립트 코드를 실행하다 보면 다양한 오류가 발생할 수 있는데, 그 중 일부 예시는 다음과 같습니다.
코딩 오류: 프로그래머가 실수로 잘못된 명령어를 사용하는 경우
잘못된 입력: 사용자가 잘못된 값을 입력하는 경우
예측 불가능한 오류: 예상치 못한 상황에서의 오류
오류 처리 예시
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
위 코드에서 'adddlert'는 잘못된 명령어로, catch 명령문을 통해 오류 메시지를 출력합니다.
자바스크립트의 오류 제어 방식
try-catch 블록: 오류가 발생할 수 있는 코드와 그 처리 방식을 정의합니다.
try {
// 코드 블록
}
catch(err) {
// 오류 처리
}
오류 객체
오류가 발생하면, 자바스크립트는 오류 정보를 담고 있는 Error 객체를 생성하며, name과 message 속성을 가집니다.
사용자 지정 오류
throw 명령문을 사용하면 개발자가 직접 오류를 발생시킬 수 있으며, 이를 통해 프로그램의 흐름을 제어할 수 있습니다.
throw "Too big";
throw 500;
입력 검사
입력값의 유효성을 검사하고, 잘못된 값이 입력되면 예외를 발생시키는 예제도 있습니다.
최종 명령문
finally 명령문은 try-catch의 실행 결과와 상관 없이 항상 실행되는 코드 블록을 정의합니다.
값 입력후 버튼을 누르면 text 입력칸이 빈칸으로 바꿔짐.
오류 객체의 세부 속성
오류 객체에는 다음과 같은 세부 속성이 있습니다.
name: 오류의 종류
message: 오류에 대한 설명
특정 오류 유형
자바스크립트에서는 여러 종류의 오류가 발생할 수 있는데, 그 중 일부는 다음과 같습니다.
평가 오류: eval() 함수의 오류
범위 오류: 유효한 숫자 범위를 벗어난 경우
참조 오류: 선언되지 않은 변수를 참조한 경우
구문 오류: 문법 오류가 있는 경우
유형 오류: 예상 범위를 벗어난 값을 사용한 경우
URI 오류: URI 함수에서 잘못된 문자 사용
Eval Error:
try {
eval("alert('Hello)"); // 따옴표가 누락되어 오류 발생
}
catch(err) {
console.log(err.name); // 출력: "SyntaxError"
}
Range Error:
let num = 1;
try {
num.toPrecision(500); // 숫자는 500개의 유효 숫자를 가질 수 없습니다.
}
catch(err) {
console.log(err.name); // 출력: "RangeError"
}
Reference Error:
let x = 5;
try {
x = y + 1; // y는 선언되지 않았습니다.
}
catch(err) {
console.log(err.name); // 출력: "ReferenceError"
}
Syntax Error:
try {
eval("alert('Hello)"); // 누락된 따옴표로 인한 오류
}
catch(err) {
console.log(err.name); // 출력: "SyntaxError"
}
Type Error:
let num = 1;
try {
num.toUpperCase(); // 숫자를 대문자로 변환할 수 없습니다.
}
catch(err) {
console.log(err.name); // 출력: "TypeError"
}
URI Error:
try {
decodeURI("%%%"); // 퍼센트 기호를 URI 디코딩할 수 없습니다.
}
catch(err) {
console.log(err.name); // 출력: "URIError"
}
'JavaScript' 카테고리의 다른 글
JavaScript 호이스팅(hoisting) (0) | 2023.08.23 |
---|---|
JavaScript 스코프(scope) (0) | 2023.08.23 |
JavaScript 정규 표현식 (0) | 2023.08.22 |
JavaScript 유형 변환 이해하기 (0) | 2023.08.22 |
JavaScript typeof() 알아보기 (0) | 2023.08.22 |