자바스크립트 finally 문이란?
자바스크립트의 finally 문은 try와 catch 블록 실행 후, 오류 발생 여부와 상관없이 항상 마지막에 실행되는 코드를 작성할 수 있게 해주는 구문입니다.
일반적으로 try-catch 문은 오류가 발생하면 catch 블록으로 제어가 넘어가 이후 코드가 실행되지 않을 수 있습니다. 하지만 finally 블록에 작성된 코드는 오류가 발생했는지와 관계없이 반드시 실행됩니다. 이러한 특성 때문에 리소스 정리, 연결 종료, 로그 기록 등 반드시 수행해야 하는 작업을 처리할 때 매우 유용합니다.
아래 예제를 살펴보겠습니다. catch 블록에서 오류를 처리했음에도 불구하고, finally 블록의 코드가 정상적으로 실행되는 것을 확인할 수 있습니다.
예제 코드
<html>
<body>
<script>
function addition() {
document.writeln("모두 덧셈을 잘해야 합니다");
}
function substraction() {
document.writeln("뺄셈이 도움이 됩니다");
}
try {
addition();
division(); // 정의되지 않은 함수 호출로 오류 발생
}
catch(err) {
document.writeln("나눗셈을 잘해야 합니다 : " + err);
}
finally {
substraction();
}
</script>
</body>
</html>실행 결과
모두 덧셈을 잘해야 합니다 나눗셈을 잘해야 합니다 : ReferenceError: division is not defined 뺄셈이 도움이 됩니다
결과 분석
위 코드의 실행 흐름을 살펴보면 다음과 같습니다.
1단계: try 블록에서 addition() 함수가 호출되어 첫 번째 메시지가 출력됩니다.
2단계: 정의되지 않은 division() 함수 호출로 ReferenceError가 발생하고, catch 블록이 이를 처리합니다.
3단계: 오류가 발생했음에도 finally 블록의 substraction() 함수가 실행되어 마지막 메시지가 출력됩니다.
이처럼 finally 문은 예외 상황에서도 프로그램의 핵심 로직이 누락되지 않도록 보장하는 중요한 역할을 합니다. 특히 파일 핸들 닫기, 데이터베이스 연결 해제, UI 로딩 상태 초기화 같은 작업에는 finally 블록 사용이 필수적이라고 할 수 있습니다.