본문 바로가기
Data & Programming/Python

[Python] 파이썬의 오류(Error)와 예외처리(Exception Handling)

by 눈부셔™ 2023. 9. 19.
728x90

[Python] 파이썬의 오류(Error)와 예외처리(Exception Handling)

프로그래밍 언어는 컴퓨터가 알아들을 수 있는 기계어인 0과 1로 바꿔주는 역할을 합니다.

 '인터프리터'라고 하는 명령어 해석기를 통해 파이썬 프로그램 언어를 한 줄 한 줄 기계어로 번역하여 컴퓨터에게 전달해줍니다. 한 줄 한 줄  동작하기 때문에 에러가 발생하는 프로그램 이전까지는 잘 동작하다가 프로그램의 오류(Error)를 만나면 오류내용을 출력하고 종료합니다. 이 때 프로그램에서 오류가 발생할 만한 코드에 예외처리를 하는 방법에 대해 말씀드리려고 합니다. 예외처리(Exception Handling)는 이러한 오류를 다루고 제어하는 프로그래밍 기술입니다. 오류가 발생해도 프로그램이 멈추지 않고 계속 실행할 수 있도록 도와줍니다.

파이썬의 오류와 예외처리

 

오류의 종류

파이썬에서는 크게 두 가지 종류의 오류가 있습니다.

  • 구문 오류(Syntax Error) : 코드의 문법이 잘못되었을 때 발생하며, 코드가 실행되기 전에 발견됩니다.
  • 예외(Exception) : 코드의 문법은 올바르지만 실행 중에 발생하는 문제로, 런타임 시에 처리해야 합니다.

 

 

오류 유형

  • NameError
    NameError는 정의되지 않은 변수를 사용하려고 할 때 발생합니다.
1
print(x)  # NameError: name 'x' is not defined

 

  • SyntaxError
    SyntaxError는 잘못된 문법을 가진 코드를 실행하려고 할 때 발생합니다.
1
if x > 5  # SyntaxError: invalid syntax

 

  • IndexError
    IndexError는 리스트나 문자열 등의 시퀀스에서 인덱스 범위를 초과하거나 음수 인덱스를 사용할 때 발생합니다.
1
2
my_list = [123]
print(my_list[5])  # IndexError: list index out of range

 

  • ZeroDivisionError
    ZeroDivisionError는 0으로 나누려고 할 때 발생합니다.
1
result = 10 / 0  # ZeroDivisionError: division by zero

 

  • FileNotFoundError
    FileNotFoundError는 파일을 찾을 수 없을 때 발생합니다.
1
2
with open('nonexistent.txt''r'as file:
    content = file.read()  # FileNotFoundError: [Errno 2] No such file or directory: 'nonexistent.txt'

 

  • 다른 오류 유형
    파이썬에는 이 외에도 다양한 오류 유형이 있으며, 각각의 오류에 대한 이해는 예외처리에 도움이 됩니다.

 

 

예외처리

예외처리는 try, except 블록을 사용하여 구현됩니다. 예외가 발생할 가능성이 있는 코드를 try 블록 내에 작성하고, 예외가 발생했을 때 처리할 코드를 except 블록에 작성합니다.

 

  • 기본적인 예외 처리
1
2
3
4
5
6
7
try:
    # 예외가 발생할 수 있는 코드
    result = 10 / 0
except ZeroDivisionError:
    # 예외 처리 코드
    result = "무한대"
print(result)  # 출력: 무한대

 

  • 다중 예외 처리

여러 종류의 예외를 처리할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
try:
    # 예외가 발생할 수 있는 코드
    result = int("문자열")
except ValueError:
    # ValueError 예외 처리 코드
    result = 0
except TypeError:
    # TypeError 예외 처리 코드
    result = -1
print(result)  # 출력: 0

 

  • 예외 정보 얻기

에러의 원인을 알고 싶다면 다음과 같이 Exception as e를 이용하여 'e'를 출력해보면 에러의 원인이 출력됩니다.

1
2
3
4
5
try:
    result = 10 / 0
except ZeroDivisionError as e:
    error_message = str(e)
    print(f"예외 발생: {error_message}")  # 출력: 예외 발생: division by zero

 

  • finally 블록

finally 블록은 예외 발생 여부와 관계없이 항상 실행됩니다. 주로 파일이나 리소스를 정리하는 용도로 사용됩니다.

1
2
3
4
5
6
7
try:
    file = open("example.txt""r")
    # 파일 읽기 작업 수행
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")
finally:
    file.close()  # 항상 파일을 닫음

 

 

 

#파이썬  #프로그래밍  #코딩  #오류  #예외처리  #try exception finally

728x90