Python/Python 기초

[Python] 예외 처리 ( try, except, finally ), 에러 타입

죵욜이 2024. 12. 1. 01:26

예외 처리

기본구조

try:
    # 예외가 발생할 가능성이 있는 코드
except 예외타입:
    # 예외 발생 시 실행할 코드
else:
    # 예외가 발생하지 않았을 때 실행할 코드
finally:
    # 예외 발생 여부와 상관없이 항상 실행할 코드
  • except 예외타입 : alias 사용가능 , 예외타입을 적지않으면 모든예외
  • except 여러번 쓸수있음
  • else, finally 생략가능

대표적인 에러타입

Syntax Error

  • 코드의 문법이 잘못되었을 때 발생
  • 괄호가 닫히지 않았을때
  • 잘못된 구문을 사용할 때
if True print("Hello")

IndentationError

  • 코드 블록의 들여쓰기가 잘못되었을 때
  • ex)  if for while  등의 코드블록이 잘못 들여쓰기된 경우
if True:
print("Hello")  # 들여쓰기가 잘못됨

TypeError

  • 연산이나 함수 호출 시 자료형이 맞지 않으면
  • ex) 문자열과 숫자를 더하려고 할 때
result = "hello" + 10  # 문자열과 정수를 더하려고 하면 오류 발생

ValueError

  • 함수나 연산에 전달된 값이 올바르지 않을때
  • ex) 숫자로 변활할 수 없는 문자열을  int()  함수로 변환할 때
num = int("hello")  # "hello"는 숫자가 아니므로 ValueError 발생

IndexError

  • 리스트나 튜플 등에서 유효하지 않은 인덱스를 사용할 때
  • ex) 리스트의 범위를 초과한 인덱스를 접근할 때
my_list = [1, 2, 3]
print(my_list[5])  # 인덱스 5는 존재하지 않으므로 IndexError 발생

KeyError

  • 딕셔너리에서 존재하지 않는 키를 사용할 때
my_dict = {"name": "Alice"}
print(my_dict["age"])  # "age"라는 키는 없으므로 KeyError 발생

ZeroDivisionError

  • 숫자를 0으로 나누려고 할 때
result = 10 / 0  # 0으로 나누려고 하면 ZeroDivisionError 발생

FileNotFoundError

  • 파일을 열거나 접근할 때 해당 파일이 존재하지 않으면 발생
file = open("nonexistent_file.txt", "r")  # 존재하지 않는 파일을 열려고 할 때 발생

AttributeError

  • 객체가 호출하려는 속성이나 메소드를 가지고 있지 않을 때
  • ex) 존재하지 않는 메소드를 호출할 때
my_str = "hello"
my_str.append(" world")

# 문자열(str) 객체는 append() 메소드를 가지지 않으므로 AttributeError 발생

ImportError

  • 모듈이나 패키지를 가져올 때 발생하는 에러
  • ex) 존재하지 않는 모듈을 가져올 때
import non_existent_module  
# 존재하지 않는 모듈을 임포트하려고 하면 ImportError 발생

MemoryError

  • 메모리 부족으로 인해 프로그램이 실행할 수 없을 때
  • ex) 너무 많은 데이터를 한 번에 처리하려 할 때

RecursionError

  • 재귀 함수가 너무 깊어져서 발생하는 오류
  • 기본적으로 파이썬은 최대 재귀 깊이를 제한
  • ex) 무한 재귀로 함수가 끝나지 않을 때
def recursive_function():
    return recursive_function()

recursive_function()  # 무한 재귀로 인해 RecursionError 발생

 

 

'Python > Python 기초' 카테고리의 다른 글

[Python] 파일 다루기  (0) 2024.12.01
[Python] 클래스 ( class )  (7) 2024.12.01
[Python] 함수  (0) 2024.12.01
[Python] 모듈 ( Module ), 패키지 ( Package )  (4) 2024.11.27
[Python] 반복문 ( for, while )  (0) 2024.11.20