English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript 기본 튜토리얼

JavaScript 객체

JavaScript 함수

JS HTML DOM

JS 브라우저 BOM

AJAX 기본 튜토리얼

JavaScript 참조 매뉴얼

JavaScript 오류 처리

JavaScript 코드를 실행할 때, 예상치 못한 오류가 발생할 수 있습니다.

오류는 프로그래머가 작성한编码 오류, 입력 오류로 인한 오류, 그리고 예상치 못한 일들일 수 있습니다.

따라서 오류를 처리하기 위해 JavaScript는4키워드:

  • try 문은 코드 블록에 오류가 있는지 테스트할 수 있게 합니다.

  • catch 문은 오류를 처리할 수 있게 합니다.

  • throw 문은 사용자 정의 오류를 생성할 수 있게 합니다.

  • finally 문은 시도하고 캡처한 후에도 결과와 관계없이 코드를 실행할 수 있게 합니다.

이 예제에서는 'alert'을 'aaalert'로 잘못 적어 오류를故의적으로 발생시킵니다:

try {
aaalert("Hello world");
}
document.getElementById("result").innerHTML = e.name + "<br>" + e.message;
}
테스트를 보세요‹/›

오류가 발생할 때, JavaScript는 일반적으로 실행을 중단하고 두 가지 속성을 가진Error 객체:name과 message.

JavaScript try ... catch 문

try 문은 코드 블록을 정의할 수 있게 하며, 실행할 때 오류를 테스트합니다.

catch 문은 try 블록에서 오류가 발생할 때, 실행할 코드 블록을 정의할 수 있도록 합니다.

JavaScript 문장 try와 catch는 짝으로 사용됩니다:

try {
  //try_statements-시도할 문장
}catch(err){
  //catch_statements-에러 처리 문장
}

JavaScript throw 문장

throw 문은 사용자 정의 예외를 발생시킵니다.

throw 문은 사용자 정의 오류를 생성하며, 기술적으로는 "예외 발생 ”。

예외는 JavaScript 문자열, 숫자, 불리언 값 또는 객체일 수 있습니다:

  throw "Invalid";  // 생성 문자열 값을 가진 예외
  throw 32;   // 생성值为32의 예외
  throw true;   // true 값을 가진 예외 생성

throw와 try와 함께 사용된 catch는 프로그램 흐름을 지정하고 사용자 정의 오류 메시지를 생성할 수 있습니다.

이 예제에서 어떤 비수학적 매개변수도 전달되면 getRectArea()가 사용자 정의 오류를 발생시킵니다:

function getRectArea(width, height) {
   if (isNaN(width) || isNaN(height)) {
  throw "Parameter is not a number!";
   }
}
try {
   getRectArea(5, 'Z');
}
catch(err) {
   document.getElementById('para').innerHTML = err;
}
테스트를 보세요‹/›

입력 검증 예제

이 예제에서 값이 오류일 경우 예외(err)가 발생합니다. catch 문은 예외(err)를 잡고 사용자 정의 오류 메시지를 표시합니다:

var x = document.querySelector("input").value;
try {
   if(x == "")    throw "is Empty";
   if(isNaN(x))    throw "Not a Number";
   if(x > 10)    throw "too High";
   if(x < 5)throw "too Low";
}
catch(err) {
   document.getElementById("para").innerHTML = "Input " + err;
}
테스트를 보세요‹/›

JavaScript 최종 문장

이 finally 문은 try와 catch 다음에 코드를 실행할 수 있게 합니다. catch는 결과에 관계없이 항상 실행됩니다.

try {
   aaalert("Hello world");
}
catch(err) {
   document.getElementById("result").innerHTML = err;
}
finally {
   document.getElementById("result").innerHTML += "<h3>Finally statement executed</h3>";
}
테스트를 보세요‹/›

catch와 finally 문은 선택사항입니다. 그러나 try 문을 사용할 때는 이들 중 하나(또는 둘 모두)를 사용해야 합니다:

try {
   aaalert("Hello world");
}
finally {
   document.getElementById("result").innerHTML = "Finally statement executed";
}
테스트를 보세요‹/›

JavaScript 오류 객체

JavaScript는 오류가 발생할 때 오류 정보를 제공하는 내장된 Error 객체를 가지고 있습니다.

오류 객체는 두 가지 유용한 속성을 제공합니다: name과 message.

오류 객체 속성

다음 표는 Error 객체의 속성을 나열합니다:

속성설명
name오류 이름을 설정하거나 반환합니다
message오류 메시지를 설정하거나 반환합니다

오류 유형

error name 속성은 일곱 가지 다른 값을 반환할 수 있습니다:

타입설명
EvalErrorglobal 함수 eval()에 대한 오류를 나타냅니다.
InternalErrorJavaScript 엔진에서 내부 오류가 발생할 때 발생하는 오류를 나타냅니다.
RangeError숫자 변수나 파라미터가 유효 범위를 벗어날 때 발생하는 오류를 나타냅니다.
ReferenceError무효 참조를 취소할 때 발생하는 오류를 나타냅니다.
SyntaxErroreval()에서 코드를 구문 분석할 때 발생하는 문법 오류를 나타냅니다.
TypeError변수나 파라미터가 유효한 타입이 아닌 경우 발생하는 오류를 나타냅니다.
URIErrorencodeURI()나 decodeURI()에 무효 파라미터를 전달할 때 발생하는 오류를 나타냅니다.

다음 절에서는 이러한 오류 유형의 각각을 자세히 설명할 것입니다.

EvalError

이를 통해eval()함수 실행 중에 오류가 발생하면 EvalError가 발생합니다.

하지만, JavaScript는 이 오류를 더 이상 발생시키지 않습니다. 그러나 이 객체는 계속 유지되어 있어서 후속 호환성을 유지합니다.

JavaScript의 최신 버전은 EvalError를 발생시키지 않습니다. 대신 SyntaxError를 사용합니다.

RangeError

허용 범위를 벗어난 숫자를 사용할 때 RangeError가 발생합니다.

예를 들어, 길이가 음수인 배열을 생성하면 RangeError가 발생합니다:

try {
var arr = new Array(-1); // throws a range error
}
document.getElementById("result").innerHTML = err.name + "<br>" + err.message;
}
테스트를 보세요‹/›

ReferenceError

시도할 때, 존재하지 않는 변수나 객체를 참조하려고 하면, 보통 ReferenceError가 발생합니다.

try {
var x == 5 + y; // throw an reference error
}
document.getElementById("result").innerHTML = err.name + "<br>" + err.message;
}
테스트를 보세요‹/›

SyntaxError

如果你的JavaScript代码中有任何语法问题,则会在运行时引发SyntaxError。

try {
eval("alert('Hello)");   // Missing ' will throw an error
}
document.getElementById("result").innerHTML = err.name + "<br>" + err.message;
}
테스트를 보세요‹/›

TypeError

값이 예상되는 타입이 아닌 경우 TypeError가 발생합니다.

var num = 50;
try {
num.toUpperCase();   // You cannot convert a number to uppercase
}
document.getElementById("result").innerHTML = err.name + "<br>" + err.message;
}
테스트를 보세요‹/›

URIError

无效의 URI(통합 자원 식별자)를 지정하면 URIError가 발생합니다.

try {
decodeURI("%");   // You cannot URI decode percent sign
}
document.getElementById("result").innerHTML = err.name + "<br>" + err.message;
}
테스트를 보세요‹/›

완전한 오류 참조

완전한 속성과 메서드 참조에 대한 정보는 다음을 방문하십시오.JavaScript 오류 참조

모든 Error 속성과 타입에 대한 설명과 예제가 포함되어 있습니다.