JavaScript try/catch/finally 문

정의와 사용법

try/catch/finally 문은 코드 블록에서 발생할 수 있는 일부 또는 모든 오류를 처리하면서도 코드를 계속 실행합니다.

오류는 프로그래머가 만든编码 오류, 잘못된 입력으로 인한 오류 및 예상할 수 없는 상황 등 여러 가지 일 수 있습니다.

try 문은 실행 중에 오류를 테스트할 수 있는 코드 블록을 정의하는 데 사용됩니다.

try 블록에서 오류가 발생하면 catch 문은 실행할 코드 블록을 정의할 수 있습니다.

finally 문은 try와 catch 후에 관계없이 코드를 실행할 수 있도록 합니다.

주석:catch와 finally 문은 선택 사항입니다. 하지만 try 문을 사용할 때는 반드시 하나 이상을 사용해야 합니다. 두 문을 동시에 사용하지 않는 경우.

추천:오류가 발생하면 JavaScript는 일반적으로 중지되고 오류 메시지를 생성합니다. throw 문을 사용하여 사용자 정의 오류(예외)를 생성하세요. throw와 try, catch를 함께 사용하면 프로그램 흐름을 제어하고 사용자 정의 오류 메시지를 생성할 수 있습니다.

JavaScript 오류에 대해 더 알고 싶다면, JavaScript 오류 강의를 공부하세요.

예제

이 예제에서는 코드에서(try 블록에서) 글자를 잘못 썼습니다.

이 예제는 "Welcome guest!"을 표시해야 합니다. 하지만 alert의 스피링은 잘못되었습니다.

catch 블록은 오류를 잡아서 이를 처리하는 코드를 실행합니다:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>

본인이 직접 시도해 보세요

페이지 아래에 더 많은 TIY 예제가 있습니다.

문법

try {
  tryCode - 시도할 코드 블록
}
catch(err) {
  catchCode - 오류를 처리하는 코드 블록
} 
finally {
  finallyCode - try / catch 결과와 관계없이 실행되는 코드 블록
}

파라미터 값

파라미터 설명
tryCode 필수 사항입니다. 실행 중 오류를 테스트하는 코드 블록입니다.
err 필수 사항입니다. catch와 함께 사용할 때. 오류를 참조하는 지역 변수를 지정합니다. 이 변수는 Error 객체를 참조할 수 있습니다. 예를 들어, 발생한 오류에 대한 정보를 포함한 메시지 "'addlert' is not defined"입니다. throw 문으로 생성된 예외가 되면, 이 변수는 throw 문에서 지정된 객체를 가리킵니다. ("더 많은 예제"를 참조하세요).
catchCode 선택 사항입니다. try 블록에서 오류가 발생하면 실행되는 코드 블록입니다. 오류가 발생하지 않으면 이 코드 블록은 결코 실행되지 않습니다.
finallyCode 선택 사항입니다. try / catch 결과와 관계없이 항상 실행되는 코드 블록입니다.

기술 세부 사항

JavaScript 버전: ECMAScript 3

更多实例

예제

이 예제는 입력을 확인합니다. 값이 잘못되었을 경우 예외 (err)를 표시합니다.

catch 문은 예외 (err)를 잡아서 사용자 정의 오류 메시지를 표시합니다:

<!DOCTYPE html>
<html>
<body>
<p>5와 10 사이의 숫자를 입력하세요:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">테스트 입력</button>
<p id="message"></p>
<script>
function myFunction() {
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").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) {
    message.innerHTML = "Input " + err;
  }
}
</script>
</body>
</html>

본인이 직접 시도해 보세요

예제

finally 문은 try와 catch 뒤에 무관하게 코드를 실행시키는 것을 허용합니다:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Empty";
    if(isNaN(x)) throw "Not a number";
    if(x > 10) throw "Too high";
    if(x < 5) throw "Too low";
  }
  catch(err) {
    message.innerHTML = "오류: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

본인이 직접 시도해 보세요

브라우저가 지원

문장 크롬 IE 파이어폭스 사파리 오퍼라
try/catch/finally 지원 지원 지원 지원 지원

관련 페이지

JavaScript 강의:JavaScript 오류

JavaScript 참조 매뉴얼:JavaScript throw 문