ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JavaScript의 try, catch, finally
    Javascript 2023. 11. 20. 12:57

     

    JavaScript에서의 예외 처리: try, catch, finally의 기초

    프로그래밍 언어 중 JavaScript는 특히 독특한 특징들을 가지고 있는데, 그중에서도 try, catch, finally 문은 프로그래머들에게 매우 중요합니다. 이 세 가지 문은 코드에서 예외 상황이 발생했을 때 이를 효율적으로 처리하는 데 사용됩니다.

    try {
      // 예외가 발생할 수 있는 코드
    } catch (error) {
      // 오류 처리 코드
    } finally {
      // 항상 실행되는 코드
    }
    1. try 블록은 예외가 발생할 가능성이 있는 코드를 둘러싸는 데 사용됩니다. 예를 들어, 외부 API에서 데이터를 가져오거나, 사용자 입력을 처리할 때 오류가 발생할 수 있습니다.
    2. catch 블록은 try 블록에서 발생한 오류를 포착하고 처리합니다. 이 블록은 오류에 대한 세부 정보를 담은 객체를 전달받아, 개발자가 원하는 대로 오류를 처리할 수 있게 해줍니다.
    3. finally 블록은 try 블록이 실행된 후에 항상 실행되는 코드 부분입니다. 이 블록은 오류가 발생하거나 발생하지 않았을 때 모두 실행되며, 주로 리소스를 정리하거나 필수적인 마무리 작업을 위해 사용됩니다.

     

    try 블록 내의 return과 finally 블록의 관계

    JavaScript에서 try 블록 안에 return 문이 있을 경우, finally 블록은 여전히 실행됩니다. 이는 JavaScript의 실행 흐름에 대한 중요한 부분입니다. 예를 들어, 다음과 같은 함수가 있다고 가정해 봅시다:

    function exampleFunction() {
        try {
            return "try 블록";
        } finally {
            console.log("finally 블록 실행");
        }
    }
    // finally 블록 실행
    // 'try 블록'

    위 함수를 호출하면, 콘솔에는 "finally 블록 실행"이 출력되고, 함수는 "try 블록"을 반환합니다. 즉, finally 블록은 try 블록의 return 문 이후에도 실행되며, return 문은 finally 블록이 완전히 실행된 후에 처리됩니다.

    finally 블록 내의 return

    그렇다면 finally 블록 내에 return 문이 있으면 어떻게 될까요? 이 경우, finally 블록의 return 문은 try 블록의 return 문을 오버라이드합니다. 예를 들어:

    function exampleFunction() {
        try {
            return "try 블록";
        } finally {
            return "finally 블록";
        }
    }
    // finally 블록

    위 함수를 호출하면, "finally 블록"이 반환됩니다. 이는 finally 블록이 try 블록보다 우선순위가 높기 때문입니다.

     

    실용적인 예제

    이러한 동작 방식은 예외 처리 시 매우 유용할 수 있습니다. 예를 들어, 리소스를 정리하거나 데이터베이스 연결을 닫는 등의 작업을 finally 블록에서 수행할 수 있습니다. 이렇게 하면 오류가 발생하든, 발생하지 않든 간에 해당 작업이 항상 실행됩니다.

    function databaseQuery() {
        let connection;
        try {
            connection = openDatabaseConnection();
            // 데이터베이스 쿼리 수행
            return "쿼리 결과";
        } catch (error) {
            // 오류 처리
            throw error;
        } finally {
            closeDatabaseConnection(connection);
        }
    }

    결론

    try...catch...finally 구문은 JavaScript에서 예외 처리를 위한 강력한 도구입니다. try 블록 내의 return 문이 있더라도 finally 블록은 항상 실행되며, finally 블록 내의 return 문은 try 블록의 return 문을 오버라이드할 수 있습니다. 이러한 특성을 이해하고 활용하면, 보다 견고하고 안정적인 JavaScript 애플리케이션을 개발할 수 있습니다.

Designed by Tistory.