JavaScript는 try...catch...finally 구문을 사용하여 예외(에러)를 처리합니다. 최신 버전의 JavaScript에는 강력한 예외 처리 기능이 추가되었으며, try...catch...finally 블록과 throw 연산자를 함께 사용해 다양한 오류 상황에 대응할 수 있습니다.
프로그래머가 직접 생성한 예외나 런타임(runtime) 오류는 catch로 잡아낼 수 있지만, JavaScript 문법 오류(syntax error)는 예외 처리로 잡을 수 없다는 점을 기억하세요.
기본 문법
try...catch...finally 블록의 기본 문법은 다음과 같습니다.
<script>
<!--
try {
// 실행할 코드
[break;]
}
catch ( e ) {
// 예외가 발생했을 때 실행할 코드
[break;]
}
[ finally {
// 예외 발생 여부와 관계없이 항상 실행되는 코드
}]
//-->
</script>각 블록의 역할
- try 블록: 오류가 발생할 가능성이 있는 코드를 작성하는 영역입니다.
- catch 블록: try 블록에서 예외가 발생하면 실행됩니다. 발생한 에러 객체(e)를 통해 오류 정보를 확인할 수 있습니다.
- finally 블록(선택 사항): 예외가 발생하든 아니든 항상 실행되므로, 리소스 정리 등 마무리 작업에 유용합니다.
실제 예제
아래 코드를 실행하면 JavaScript에서 예외 처리가 어떻게 동작하는지 확인할 수 있습니다.
<html>
<head>
<script>
<!--
function myFunc()
{
var x = 20;
try {
alert("변수 a의 값 : " + a );
}
catch ( e ) {
alert("에러: " + e.description );
}
}
//-->
</script>
</head>
<body>
<p>아래 버튼을 클릭하면 결과를 확인할 수 있습니다:</p>
<form>
<input type = "button" value = "클릭" onclick = "myFunc();" />
</form>
</body>
</html>예제 설명
위 예제에서는 선언되지 않은 변수 a를 참조하기 때문에 try 블록 안에서 ReferenceError가 발생합니다. 하지만 예외 처리 덕분에 프로그램이 강제로 종료되지 않고, catch 블록이 실행되어 사용자에게 친절한 에러 메시지를 보여줄 수 있습니다.
참고로 현대 브라우저 환경에서는 e.description 대신 표준 속성인 e.message를 사용하는 것이 권장됩니다.