728x90
728x90
1. 주요 내장 예외 클래스 종류 및 예제
- 파이썬의 주요 내장 예외 클래스들에 대해 예제를 통해 설명해 보겠습니다.
1-1. AttributeError
- 존재하지 않는 속성에 접근할 때 발생합니다.
class Sample:
pass
obj = Sample()
try:
obj.some_method() # 존재하지 않는 메서드 호출
except AttributeError as e:
print("AttributeError:", e)
'''
실행 결과
AttributeError: 'Sample' object has no attribute 'some_method'
'''
1-2. NameError
- 정의되지 않은 변수를 참조할 때 발생합니다.
try:
print(undeclared_variable) # 선언되지 않은 변수 접근
except NameError as e:
print("NameError:", e)
'''
실행 결과
NameError: name 'undeclared_variable' is not defined
'''
1-3. TypeError
- 잘못된 타입의 객체를 사용하려 할 때 발생합니다.
try:
print("Hello" + 5) # 문자열과 정수 더하기 시도
except TypeError as e:
print("TypeError:", e)
'''
실행 결과
TypeError: can only concatenate str (not "int") to str
'''
1-4. ValueError
- 타입은 맞지만 값이 적절하지 않을 때 발생합니다.
try:
int("abc") # 숫자가 아닌 문자열을 정수로 변환 시도
except ValueError as e:
print("ValueError:", e)
'''
실행 결과
ValueError: invalid literal for int() with base 10: 'abc'
'''
1-5. IndexError
- 시퀀스 자료형에서 잘못된 인덱스를 참조할 때 발생합니다.
lst = [1, 2, 3]
try:
print(lst[5]) # 범위를 초과한 인덱스 접근
except IndexError as e:
print("IndexError:", e)
'''
실행 결과
IndexError: list index out of range
'''
1-6. KeyError
- 딕셔너리에서 존재하지 않는 키를 참조할 때 발생합니다.
my_dict = {"name": "Alice"}
try:
print(my_dict["age"]) # 존재하지 않는 키 접근
except KeyError as e:
print("KeyError:", e)
'''
실행 결과
KeyError: 'age'
'''
1-7. FileNotFoundError
- 파일이 존재하지 않을 때 발생합니다.
try:
with open("non_existent_file.txt") as f:
content = f.read()
except FileNotFoundError as e:
print("FileNotFoundError:", e)
'''
실행 결과
FileNotFoundError: [Errno 2] No such file or directory: 'non_existent_file.txt'
'''
1-8. PermissionError
- 파일에 대한 권한이 없을 때 발생합니다.
try:
with open("/root/secret_file.txt") as f: # 관리자 권한이 필요한 파일 접근 시도
content = f.read()
except PermissionError as e:
print("PermissionError:", e)
1-9. ZeroDivisionError
- 숫자를 0으로 나눌 때 발생합니다.
try:
result = 10 / 0 # 0으로 나누기 시도
except ZeroDivisionError as e:
print("ZeroDivisionError:", e)
'''
실행 결과
ZeroDivisionError: division by zero
'''
1-10. OSError
- 운영 체제에서 발생하는 일반적인 오류입니다. 예를 들어, 잘못된 파일 경로로 디렉터리 생성 시도 시 발생할 수 있습니다.
import os
try:
os.mkdir("/invalid_path/test") # 잘못된 경로로 디렉터리 생성 시도
except OSError as e:
print("OSError:", e)
'''
실행 결과
OSError: [WinError 3] 지정된 경로를 찾을 수 없습니다: '/invalid_path/test'
'''
1-11. ImportError
- 모듈을 찾을 수 없거나 로드할 수 없을 때 발생합니다.
try:
import non_existent_module # 존재하지 않는 모듈을 임포트 시도
except ImportError as e:
print("ImportError:", e)
'''
실행 결과
ImportError: No module named 'non_existent_module'
'''
1-12. StopIteration
- 반복이 끝났음을 나타낼 때 발생합니다.
it = iter([1, 2, 3])
try:
print(next(it))
print(next(it))
print(next(it))
print(next(it)) # 반복이 끝났는데도 next() 호출
except StopIteration as e:
print("StopIteration:", e)
1-13. EOFError
- 파일이나 input()으로 데이터를 읽을 때 더 이상 데이터가 없을 때 발생합니다. 대화형 프롬프트에서 발생할 수 있는 예외입니다.
- 터미널에서 Ctrl+D (macOS/Linux) 또는 Ctrl+Z (Windows) 실행해야 발생합니다.
try:
data = input("입력하세요: ") # 대화형 환경에서 종료 시 발생
except EOFError as e:
print("EOFError:", e)
1-14. RuntimeError
- 일반적인 실행 오류가 발생했지만 다른 예외로 구분되지 않을 때 사용됩니다.
import threading
def worker():
print("스레드 작업 중")
t = threading.Thread(target=worker)
t.start()
try:
t.start() # 이미 시작한 스레드를 다시 시작하려고 할 때 RuntimeError 발생
except RuntimeError as e:
print("RuntimeError 발생:", e)
'''
실행 결과
RuntimeError 발생: threads can only be started once
'''
1-15. NotImplementedError
- 구현되지 않은 메서드나 함수에 대해 호출이 이루어졌을 때 발생합니다.
class Base:
def method(self):
raise NotImplementedError("이 메서드는 서브클래스에서 구현되어야 합니다.")
class Derived(Base):
pass
try:
d = Derived()
d.method() # 구현되지 않은 메서드 호출
except NotImplementedError as e:
print("NotImplementedError:", e)
'''
실행 결과
NotImplementedError: 이 메서드는 서브클래스에서 구현되어야 합니다.
'''
1-16. RecursionError
- 재귀 호출이 너무 깊어져서 파이썬이 허용하는 최대 깊이를 초과할 때 발생합니다.
def recursive():
return recursive()
try:
recursive() # 무한 재귀 호출
except RecursionError as e:
print("RecursionError:", e)
'''
실행 결과
RecursionError: maximum recursion depth exceeded
'''
관련글
728x90
'프로그래밍 > [Python] 파이썬' 카테고리의 다른 글
파이썬 패키지, 모듈 import 하는 방법 정리 (import, from , as) (0) | 2024.11.30 |
---|---|
[Python] 파이썬 try/except문 정리 (0) | 2024.10.29 |
[Python] reduce() 함수 이해하기 - 파이썬 문법 (0) | 2024.10.27 |
[Python] filter() 함수 이해하기 - 파이썬 문법 (0) | 2024.10.26 |
[Python] map() 함수 이해하기 - 파이썬 문법 (0) | 2024.10.25 |