자바스크립트에서 예외(exception)를 처리하려면 try...catch...finally 구문을 사용합니다. 자바스크립트는 try...catch...finally 문과 throw 연산자를 통해 예외 처리 기능을 제공합니다.
try...catch 블록으로 프로그래머가 직접 발생시킨 예외와 런타임(runtime) 예외를 모두 잡을 수 있지만, 자바스크립트의 문법 오류(syntax error)는 catch 블록으로 잡을 수 없다는 점에 유의해야 합니다.
각 블록의 역할
- try 블록: 오류가 발생할 가능성이 있는 코드를 감싸는 영역입니다.
- catch 블록: try 블록에서 오류가 발생했을 때 실행되며, 에러 객체(e)를 통해 오류 정보를 확인할 수 있습니다.
- 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>정리
위 예제에서는 변수 a에 값이 정상적으로 할당되어 있으므로 try 블록의 alert가 먼저 실행되고, 이후 finally 블록의 메시지가 표시됩니다. 만약 try 블록 안에서 오류가 발생한다면 catch 블록이 실행되어 오류 내용을 화면에 보여주고, 그 다음에 finally 블록이 실행됩니다.
추가로, throw 문을 사용하면 개발자가 의도적으로 오류를 발생시켜 catch 블록에서 처리하도록 할 수 있습니다. 이를 활용하면 유효성 검사 실패 등 특정 조건에서 명확한 오류 메시지를 전달하는 견고한 코드를 작성할 수 있습니다.