최신 버전의 JavaScript에는 예외 처리(Exception Handling) 기능이 추가되었습니다. JavaScript는 try...catch...finally 구문과 throw 연산자를 통해 예외를 처리할 수 있습니다.
이 구문을 사용하면 프로그래머가 직접 발생시킨 예외와 런타임(runtime) 오류는 잡아낼(catch) 수 있지만, JavaScript의 문법 오류(syntax error)는 catch할 수 없다는 점에 유의해야 합니다.
try...catch...finally 기본 문법
try...catch...finally 블록의 기본적인 문법 구조는 다음과 같습니다.
<script>
<!--
try {
// 실행할 코드
[break;]
}
catch ( e ) {
// 예외가 발생했을 때 실행할 코드
[break;]
}
[ finally {
// 예외 발생 여부와 관계없이
// 항상 실행되는 코드
}]
//-->
</script>각 블록의 역할
try 블록: 오류가 발생할 가능성이 있는 코드를 작성합니다. 이 블록 안에서 예외가 발생하면 즉시 catch 블록으로 제어가 넘어갑니다.
catch 블록: try 블록에서 예외가 발생한 경우에만 실행됩니다. 매개변수 e에는 발생한 오류에 대한 정보가 담긴 Error 객체가 전달됩니다.
finally 블록: 선택 사항이며, 예외 발생 여부와 상관없이 항상 실행됩니다. 주로 리소스 정리나 마무리 작업에 활용됩니다.
예제 코드
다음 코드를 실행하면 JavaScript에서 try...catch...finally 문이 어떻게 동작하는지 확인할 수 있습니다.
<html>
<head>
<script>
<!--
function myFunc() {
var a = 100;
try {
alert("변수 a의 값 : " + a );
}
catch ( e ) {
alert("오류: " + e.description );
}
finally {
alert("finally 블록은 항상 실행됩니다!" );
}
}
//-->
</script>
</head>
<body>
<p>아래 버튼을 클릭하면 결과를 확인할 수 있습니다:</p>
<form>
<input type = "button" value = "클릭" onclick = "myFunc();" />
</form>
</body>
</html>위 예제에서는 try 블록 내의 코드가 정상적으로 실행되므로 변수 a의 값이 alert 창으로 표시되고, 이후 finally 블록의 메시지가 출력됩니다. 만약 try 블록에서 오류가 발생했다면 catch 블록이 실행된 뒤 finally 블록이 실행되는 구조입니다.