JavaScript에서는 try-catch 블록으로 구문 오류(Syntax Error)를 처리할 수 없습니다. 그 이유는 구문 오류가 코드가 실행되기 전, 즉 파싱(parsing) 단계에서 발생하기 때문입니다. try-catch는 실제 코드가 실행되는 런타임에 발생하는 예외만 잡을 수 있으므로, 파싱 시점에 발생하는 구문 오류에는 적용되지 않습니다.
window.onerror를 활용한 구문 오류 처리
구문 오류를 감지하려면 전역 오류 이벤트 핸들러인 window.onerror를 사용하는 것이 효과적입니다. 아래 코드와 같이 활용할 수 있습니다.
<html>
<head>
<script>
window.onerror = function(e) {
document.write('Error: ', e, '</br>')
};
</script>
<script>
document.write('x'x')
</script>
</head>
<body>
</body>
</html>
위 예제에서 두 번째 스크립트 블록의 document.write('x'x')는 따옴표가 잘못 사용되어 구문 오류를 유발합니다. 이때 첫 번째 스크립트 블록에 정의된 window.onerror 핸들러가 이 오류를 감지하여 화면에 에러 메시지를 출력합니다.
주의 사항
참고: 오류 처리 함수(window.onerror 핸들러)는 반드시 별도의 <script> 태그 안에 정의해야 합니다. 동일한 스크립트 블록 내에서 정의하면, 해당 블록의 구문 오류로 인해 핸들러 자체가 등록되기 전에 파싱이 중단될 수 있기 때문입니다.