티스토리 뷰

목차



    "테크씬 - 핵심 요약 후 시작합니다."

     

    • 예외 처리는 코드 실행 중 발생할 수 있는 예외 상황에 대비해 안전한 코드 실행을 보장하는 방법임
    • 일반적인 예외 유형으로 Null Reference, Array Index Out of Bounds, File Not Found 등 다양한 예외 유형을 파악하는 것이 중요함
    • 예외 감지, 예외 처리, 예외 복구의 3단계의 절차를 미리 준비하는 것이 핵심적임

    예외 처리 절차

     


    안녕하세요, 테크씬입니다. 우리 모두 일상 생활에서 예상치 못한 문제에 직면하는 경우가 있죠^^. 예를 들어, 레스토랑에서 원하는 메뉴가 품절이 됐다면, 다른 메뉴를 주문하거나 다른 레스토랑으로 가거나, 또는 그냥 집으로 돌아갈 수 있잖아요. 이처럼, 개발 혹은 프로그래밍에서도 '예외' (Exception)가 발생할 수 있습니다. 이런 예외는 '예외 처리' (Exception Handling)를 통해 대응할 수 있죠. 금번 포스팅에서는 예외 처리의 기본적인 절차와 방법에 대해 알아보겠습니다.


    1. 예외 처리란?

    프로그램에서 예외는 프로그램이 정상적으로 작동하는 데 방해가 되는 예상치 못한 상황을 의미합니다. 예외 처리는 이런 예외 상황에 대비하는 프로그래밍 기법입니다. 예외 처리를 통해 프로그램은 예외 상황에 대처하고, 프로그램이 중단되지 않고 계속 실행될 수 있습니다.

     

     

    2. 예외 처리의 중요성

    예외 처리는 다음과 같은 이유로 중요합니다:

    a. 사용자 경험: 
    예외 처리를 통해 프로그램이 예외 상황에서도 안정적으로 동작할 수 있습니다. 이로 인해 사용자 경험이 향상됩니다.
    b. 프로그램 안정성:
    예외 처리를 통해 프로그램이 예외 상황에 대해 예측 가능하게 반응할 수 있습니다. 이는 프로그램의 안정성을 높입니다.
    c. 디버깅:
    예외 처리를 통해 개발자는 예외 상황에 대해 더 잘 이해할 수 있습니다. 이는 문제의 원인을 찾고 수정하는 데 도움이 됩니다.

     


    3. 예외 처리 절차

    이제 예외 처리의 가장 기본적인 절차를 살펴보겠습니다:

    1) 예외 감지:
    프로그램이 예외를 감지하면, 프로그램은 '예외가 발생했다'는 신호를 보냅니다. 이것은 고장난 자동차가 엔진 경고등을 켜는 것과 같습니다.

    2) 예외 처리: 
    예외 처리 메커니즘은 이 신호를 받고, 어떤 예외가 발생했는지 확인한 다음, 적절한 처리 방법을 결정합니다. 이는 고장난 자동차가 문제를 자동으로 진단하고 해결 방법을 찾는 것과 비슷합니다.

    3) 예외 복구: 
    예외 처리가 완료되면, 프로그램은 일반적인 작동 상태로 돌아갑니다. 이는 자동차가 문제를 해결하고 다시 원활하게 운행하는 것과 같습니다.

     


    4. 자주 발생하는 예외 유형

    예외는 다양한 유형이 있지만, 여기에서는 가장 흔히 발생하는 몇 가지 예외 유형을 살펴보겠습니다.

    1.  Null Reference Exception: 객체 참조가 null일 때 발생. 예를 들어, 객체를 생성하지 않고 그 메소드를 호출하려 할 때 발생합니다.
    2.  Array Index Out of Bounds Exception: 배열의 범위를 벗어나는 인덱스를 참조할 때 발생. 예를 들어, 배열의 크기보다 큰 인덱스를 사용하려 할 때 발생합니다.
    3.  File Not Found Exception: 찾으려는 파일이 존재하지 않을 때 발생. 예를 들어, 파일 경로가 잘못되었거나 파일이 삭제되었을 때 발생합니다.
    4.  Arithmetic Exception: 산술 연산이 잘못됐을 때 발생. 예를 들어, 0으로 나누려고 할 때 발생합니다.
    5.  Class Not Found Exception: 해당 클래스를 찾을 수 없을 때 발생. 이는 클래스 경로가 잘못되었거나 클래스가 존재하지 않는 경우에 발생합니다.
    6.  Illegal Argument Exception: 메소드에 잘못된 인자가 전달됐을 때 발생. 예를 들어, 인자로 음수가 필요하지 않지만 음수가 전달된 경우 발생합니다.
    7.  Stack Overflow Exception: 스택 메모리가 너무 많이 사용되어 오버플로우가 발생했을 때 발생. 이는 보통 재귀적인 호출에서 잘못된 종료 조건 때문에 발생합니다.
    8.  Out of Memory Exception: 시스템이 더 이상 메모리를 할당할 수 없을 때 발생. 이는 프로그램이 너무 많은 메모리를 사용하려고 할 때 발생합니다.
    9.  Illegal State Exception: 객체가 적절하지 않은 상태일 때 발생. 예를 들어, 객체가 아직 초기화되지 않았는데 그 메소드를 호출하려 할 때 발생합니다.
    10.  IO Exception: 입출력 작업 중 오류가 발생했을 때 발생. 이는 파일 읽기/쓰기와 같은 IO 작업에서 자주 발생합니다.
    11.  Number Format Exception: 숫자를 파싱하는 동안 오류가 발생했을 때 발생. 예를 들어, 문자열을 숫자로 변환하려는데 문자열이 잘못된 형식인 경우에 발생합니다.
    12.  Timeout Exception: 작업이 지정된 시간 내에 완료되지 않았을 때 발생. 예를 들어, 네트워크 요청이 타임아웃된 경우에 발생합니다.
    13.  Data Access Exception: 데이터베이스 접근 중 오류가 발생했을 때 발생. 이는 SQL 쿼리 오류, 연결 오류
    14.  Unsupported Operation Exception: 호출된 메소드가 지원되지 않을 때 발생. 이는 메소드가 아직 구현되지 않았거나, 특정 상황에서만 지원되는 경우에 발생합니다.
    15.  Concurrent Modification Exception: 객체를 순회하는 동안 해당 객체가 변경됐을 때 발생. 예를 들어, 컬렉션을 순회하는 동안 그 컬렉션에 아이템이 추가되거나 제거된 경우에 발생합니다.
    16.  Null Pointer Exception: 참조 변수가 null 값을 가지고 있을 때 그 변수를 사용하려고 할 때 발생합니다.
    17.  Security Exception: 보안 정책에 위배되는 동작을 시도했을 때 발생. 예를 들어, 파일 시스템의 허용되지 않은 영역에 접근하려 할 때 발생합니다.
    18.  Type Not Supported Exception: 지원되지 않는 타입을 사용하려고 할 때 발생. 예를 들어, 특정 함수나 메소드가 특정 타입의 인자만 받는데 다른 타입의 인자를 넘겼을 때 발생합니다.
    19.  Invalid Cast Exception: 타입 변환에 실패했을 때 발생. 예를 들어, 하위 클래스 객체를 상위 클래스 타입으로 변환하는 것은 가능하지만, 반대로 상위 클래스 객체를 하위 클래스 타입으로 변환하려 할 때 발생합니다.
    20.  Network Exception: 네트워크 관련 작업 중 오류가 발생했을 때 발생. 예를 들어, 서버에 연결을 시도하는 동안 네트워크 연결이 끊어진 경우에 발생합니다.

      각각의 예외 유형에 대해 처리하는 방법은 다양하며, 그 방법을 선택하는 것은 상황에 따라 다릅니다.


     

    5. 마치며

    예외 처리는 소프트웨어 프로그래밍에서 중요한 요소입니다. 그럼에도 누구나 쉽게 이해하고 적용할 수 있도록, 예외 처리를 일상 생활의 비유를 통해 설명하려고 노력해 보았습니다^^. 이해하기 어려운 부분이 있다면, 돌아가서 다시 한번 읽어 보시는 것을 좋겠네요!

     

    예외 처리를 이해하고 각자의 시스템에 적용하면, 프로그램은 예상치 못한 문제에 대해 유연하게 대응할 수 있습니다. 이를 통해 시스템 안정성이 높이고, 사용자 경험이 향상시켜 보시죠! 오늘도 테크씬이었습니다!

     


    [관련 포스팅]

    2023.05.06 - [개발] - GitLab과 Jenkins: 완벽한 팀워크 (feat. API 노드)

     

    GitLab과 Jenkins: 완벽한 팀워크 (feat. API 노드)

    "테크씬 - 핵심 요약 후 시작합니다." Jenkins는 오픈 소스 CI/CD 도구로 소프트웨어 개발 프로젝트의 자동 빌드, 테스트 및 배포를 지원하며, API 서버와 협력하여 개발 프로세스를 자동화하고 지속

    techscene.tistory.com

    2023.02.26 - [개발] - CI/CD 가이드 : 지속가능한 개발의 꽃

     

    CI/CD 가이드 : 지속가능한 개발의 꽃

    "테크씬 - 핵심 요약 후 시작합니다." DevOps 많이 들어보셨죠? CI/CD는 DevOps의 핵심 요소 중 하나입니다. 지속적 통합(CI, Continuous Integration) 및 지속적 배포(CD, Continuous Delivery)는 소프트웨어 팀이 소

    techscene.tistory.com

     

     

    반응형