예외 처리
기본구조
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 |