JavaScript에서는 throw 문을 사용하여 내장 예외(built-in exceptions) 또는 개발자가 직접 정의한 커스텀 예외(custom exceptions)를 발생시킬 수 있습니다. 이렇게 발생시킨 예외는 이후 try...catch 블록을 통해 포착(catch)할 수 있으며, 프로그램이 비정상적으로 종료되지 않도록 적절한 후속 조치를 취할 수 있습니다.
throw 문의 기본 동작 원리
throw 문은 문자열, 숫자, 불리언, 객체 등 어떤 값이든 던질 수 있습니다. 다만 실무에서는 오류 메시지와 스택 정보를 함께 담을 수 있는 Error 객체를 사용하는 것이 권장됩니다. 던져진 예외는 가장 가까운 catch 블록에서 전달받아 처리하게 됩니다.
예제 코드
아래 예제는 0으로 나누려는 상황에서 throw 문으로 직접 예외를 발생시키고, catch 블록에서 이를 처리하는 방식을 보여줍니다. 버튼을 클릭하면 결과를 확인할 수 있습니다.
<html>
<head>
<script>
<!--
function myFunc()
{
var a = 100;
var b = 0;
try {
if ( b == 0 ){
throw( "Divide by zero error." );
} else {
var c = a / b;
}
}
catch ( e ) {
alert("Error: " + e );
}
}
//-->
</script>
</head>
<body>
<p>아래 버튼을 클릭하면 결과를 확인할 수 있습니다:</p>
<form>
<input type = "button" value = "클릭" onclick = "myFunc();" />
</form>
</body>
</html>실행 결과
위 코드에서 변수 b의 값은 0이므로, if 조건문이 참이 되어 throw("Divide by zero error.")가 실행됩니다. 즉시 실행 흐름이 중단되고 해당 예외는 인접한 catch 블록으로 전달되며, 결과적으로 "Error: Divide by zero error."라는 경고창(alert)이 화면에 표시됩니다.
정리
throw 문은 잘못된 입력값 검증, 필수 조건 확인 등 프로그램 로직상 문제가 될 수 있는 상황을 명확하게 알리는 데 유용합니다. try...catch와 함께 사용하면 예기치 못한 오류 상황에서도 애플리케이션이 안정적으로 동작하도록 만들 수 있습니다.