WIPIVERSE

런타임 에러

런타임 에러

정의
런타임 에러(실행 시간 오류)는 프로그램이 실행되는 동안 발생하는 오류를 말한다. 코드 자체는 컴파일 단계에서 문법적으로 문제가 없지만, 프로그램이 실제로 동작하면서 조건이 충족되지 않거나 자원이 부족한 경우 등에 의해 중단된다.

주요 원인

구분 설명
분할 오류 배열이나 리스트 등의 인덱스를 범위를 벗어나 접근할 때 발생한다.
형 변환 오류 부적절한 타입 변환으로 인해 실행 중 예외가 발생한다.
자원 부족 메모리 누수, 파일 핸들 부족, 네트워크 연결 실패 등 시스템 자원이 부족할 때 발생한다.
논리적 오류 프로그램 로직이 예상과 다르게 흐르면서 예외 상황에 도달할 때 발생한다(예: 0으로 나누기).
외부 의존성 오류 라이브러리, API, 데이터베이스 등 외부 시스템과의 통신 실패 시 발생한다.

예시 (언어별)

  • C/C++

    int *p = NULL;
    *p = 10;          // 널 포인터 역참조 → 런타임 에러 (Segmentation fault)
    
  • Java

    int[] arr = new int[5];
    int x = arr[10];  // ArrayIndexOutOfBoundsException 발생
    
  • Python

    lst = [1, 2, 3]
    print(lst[5])    # IndexError 발생
    

예방 및 대응 방안

  1. 예외 처리: try‑catch(또는 try‑except) 구문을 활용하여 예외 발생 시 적절히 대처한다.
  2. 입력 검증: 사용자 입력이나 외부 데이터에 대해 범위와 형식을 사전에 확인한다.
  3. 정적 분석 도구: 컴파일러 경고, Lint, static analyzer 등을 사용해 잠재적 오류를 사전에 탐지한다.
  4. 테스트: 단위 테스트, 통합 테스트, 경계값 테스트 등을 통해 다양한 실행 경로를 검증한다.
  5. 메모리 관리: 자동 메모리 관리가 없는 언어(C/C++)에서는 메모리 할당·해제 규칙을 엄격히 준수한다.
  6. 로그 기록: 오류 발생 시 상세 로그를 남겨 원인 분석에 활용한다.

관련 용어

  • 컴파일 타임 에러: 소스 코드를 컴파일하는 과정에서 발생하는 문법·타입 오류.
  • 예외(Exception): 런타임 에러를 프로그래밍 언어 차원에서 표준화한 처리 메커니즘.
  • 크래시(Crash): 런타임 에러가 프로그램 전체의 비정상 종료를 초래한 경우.

참고
런타임 에러는 소프트웨어 개발 전 과정에서 발생 가능성을 고려하여 설계·코딩·테스트 단계에서 체계적으로 관리해야 하는 일반적인 오류 유형이다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기