본문 바로가기

IT∙테크∙프로그래밍

소프트웨어 오류 총 정리: Syntax Error부터 File Input/Output Error까지...

프로그램 오류란?

프로그램에서 오류란 코드의 잘못된 부분 또는 실행 중에 예상치 못한 상황이 발생하여 원하는 동작을 수행하지 못하는 상태를 가리킵니다. 이로 인해 프로그램이 예외적인 동작을 보이거나 중단될 수 있습니다. 프로그램 오류는 다음과 같은 종류가 있습니다. 하나하나 알아보겠습니다.

프로그램 오류의 종류 이미지
프로그램 오류의 종류

문법 오류(Syntax Error)
런타임 오류(Runtime Error)
논리 오류(Logical Error)
네트워크 오류(Network Error)
메모리 오류(Memory Error)
데이터 입력 오류(Data Input Error)
파일 입출력 오류(File Input/Output Error)

문법 오류(Syntax Error)

이는 코드가 잘못 작성되어 컴파일러가 이해하지 못할 때 발생합니다. 예를 들어, 변수명을 잘못 작성하거나 괄호를 닫지 않았을 때 문법 오류가 발생합니다. 이 경우, 코드를 다시 확인하고 오타나 빠진 부분을 찾아 수정해야 합니다. 예를 들어, 변수명을 'var name'으로 작성해야 하는데 'varname'으로 작성했다면, 오류 메시지가 출력될 것입니다. 이 경우에는 변수명을 'var name'으로 수정하여 문법 오류를 해결해야 합니다.

SyntaxError: invalid syntax

런타임 오류(Runtime Error)

이는 코드 실행 중에 발생하는 오류로, 일반적으로 오류 메시지와 함께 프로그램이 중단됩니다. 예를 들어, 0으로 나누는 연산이나, 배열의 범위를 벗어나는 인덱스를 참조하는 경우 런타임 오류가 발생합니다. 이 경우, 오류 메시지를 분석하고, 문제가 되는 코드 부분을 확인하여 수정해야 합니다. 예를 들어, 배열의 길이가 5인데 6번째 인덱스를 참조하는 코드를 작성했다면, 오류 메시지가 출력될 것입니다. 이 경우에는 배열의 인덱스 범위를 0부터 4까지로 수정하여 런타임 오류를 해결해야 합니다.

ZeroDivisionError: division by zero

논리 오류(Logical Error)

이는 코드가 문법적으로나 런타임적으로 오류가 없지만, 예상한 대로 작동하지 않을 때 발생합니다. 예를 들어, 두 개의 숫자를 더하는 함수를 작성할 때, 잘못된 연산자를 사용하여 곱셈을 수행하는 경우 논리 오류가 발생합니다. 이 경우, 코드를 다시 검토하고 예상한 대로 작동하도록 수정해야 합니다. 예를 들어, 두 개의 숫자를 더하는 함수에서 잘못된 연산자 '*'를 사용했다면, 연산자 '+'로 수정하여 논리 오류를 해결해야 합니다.

TypeError: can't multiply sequence by non-int of type 'float'

네트워크 오류(Network Error)

이는 인터넷 연결이 끊어졌거나, 서버에 연결할 수 없는 등의 오류가 발생할 때 발생합니다. 예를 들어, 웹 페이지를 불러올 때 인터넷 연결이 끊어져 있으면 네트워크 오류가 발생합니다. 이 경우, 인터넷 연결 상태를 확인하고, 서버 또는 네트워크 구성을 확인하여 문제를 해결해야 합니다. 예를 들어, 인터넷 연결이 끊어져 있는 경우, 인터넷 연결이 가능한 다른 네트워크를 사용하거나 인터넷 연결을 복원하여 네트워크 오류를 해결할 수 있습니다.

ConnectionError: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

메모리 오류(Memory Error)

이는 시스템 메모리가 부족하여 프로그램이 실행되지 못할 때 발생합니다. 예를 들어, 대용량 파일을 처리할 때 메모리가 부족하여 프로그램이 중단되는 경우 메모리 오류가 발생합니다. 이 경우, 다른 프로그램을 종료하거나, 메모리를 추가로 구매하여 해결할 수 있습니다.

MemoryError: Unable to allocate 4.00 GiB for an array with shape (10000000,) and data type float64

데이터 입력 오류(Data Input Error)

이는 프로그램에 입력된 데이터가 잘못된 형식이거나, 유효하지 않은 값일 때 발생합니다. 예를 들어, 나이를 입력하는 필드에 문자열을 입력하거나, 유효하지 않은 나이 값을 입력하는 경우 데이터 입력 오류가 발생합니다. 이 경우, 데이터를 다시 검토하고, 유효한 형식으로 입력해야 합니다.

ValueError: invalid literal for int() with base 10: 'abc'

파일 입출력 오류(File Input/Output Error)

이는 파일이 존재하지 않거나, 접근 권한이 없는 경우 등 파일 입출력 과정에서 발생하는 오류입니다. 예를 들어, 존재하지 않는 파일을 열거나, 읽기 권한이 없는 파일을 열려는 경우 파일 입출력 오류가 발생합니다. 이 경우, 파일의 존재 여부와 권한을 확인하고, 파일 입출력 코드를 수정하여 문제를 해결해야 합니다. 예를 들어, 존재하지 않는 파일을 열려는 경우 파일의 경로를 확인하거나, 존재하지 않는 파일을 생성하여 파일 입출력 오류를 해결할 수 있습니다.

FileNotFoundError: [Errno 2] No such file or directory: 'example.txt'

대처 방법으로는 오류 메시지를 잘 살펴보고, 문제가 되는 코드 부분을 수정하는 것이 가장 기본적인 방법입니다. 또한, 디버깅 도구를 사용하여 코드를 분석하고, 오류를 해결할 수 있습니다. 프로그래밍할 때는 오류가 발생할 가능성이 높기 때문에, 코드 작성 시에 오류 처리를 고려하는 것이 좋습니다.

반응형