본문 바로가기
프로그래밍/python

7. 파이썬 예외 처리: try-except, 다양한 예외 처리 기법, finally

by 마루의 일상 2024. 3. 26.
728x90
반응형

예외 처리란?

예외 처리는 프로그램이 실행 중에 발생하는 오류를 처리하는 기술입니다. 이를 통해 프로그램이 비정상적으로 종료되는 것을 방지하고, 예외 상황을 대비할 수 있습니다.

try-except문을 사용하여 예외 처리하는 방법 설명

try-except 문 구조:

try: 
	# 예외가 발생할 수 있는 코드 
    예외 발생 가능성이 있는 코드 
    
except 예외종류 as 변수: 
	# 예외 처리 코드 
	예외가 발생했을 때 처리할 코드

예제:

try: 
	x = 10 / 0 # ZeroDivisionError 발생 

except ZeroDivisionError as e: 
	print("0으로 나눌 수 없습니다.") 
    print("에러 메시지:", e)

다양한 예외 처리 기법과 사용 사례 설명

1. 여러 개의 except문 사용하기:

try: 
	# 파일 열기 시도 
    file = open("nonexistent.txt", "r") 
    content = file.read() 
    file.close() 
except FileNotFoundError: 
	print("파일을 찾을 수 없습니다.")
except PermissionError: 
	print("파일에 접근 권한이 없습니다.")

 

2. except문에 여러 예외를 함께 처리하기:

try: 
	x = 10 / 0 # ZeroDivisionError 발생 
except (ZeroDivisionError, ArithmeticError) as e: 
	print("0으로 나눌 수 없거나 산술 연산 오류가 발생했습니다.") 
    print("에러 메시지:", e)
  1. 모든 예외 처리하기:
try: 
	x = 10 / 0 # ZeroDivisionError 발생 
except Exception as e: 
	print("모든 예외를 처리합니다.") 
    print("에러 메시지:", e)

finally문의 활용

finally문은 예외 발생 여부에 관계없이 항상 실행되는 코드 블록입니다. 주로 리소스 해제나 정리 작업에 활용됩니다.

finally문 구조:

try: 
	# 예외가 발생할 수 있는 코드
    예외 발생 가능성이 있는 코드 
except 예외종류 as 변수: 
	# 예외 처리 코드 
    예외가 발생했을 때 처리할 코드 
finally: 
	# 항상 실행되는 코드
	항상 실행되어야 할 코드

예제:

try: 
	file = open("myfile.txt", "r") 
    content = file.read() 
except FileNotFoundError: 
	print("파일을 찾을 수 없습니다.") 
finally: 
	print("파일을 닫습니다.") 
    file.close()

이렇게 예외 처리를 통해 프로그램이 예기치 않은 오류로 중단되는 것을 방지하고, 안정적인 프로그램을 작성할 수 있습니다.

 

tip. 내장 예외 클래스 종류

  1. Exception: 모든 내장 예외 클래스의 부모 클래스입니다.
  2. SyntaxError: 구문 오류가 발생했을 때 일어나는 예외입니다.
  3. IndentationError: 들여쓰기에 문제가 있을 때 발생하는 예외입니다.
  4. NameError: 지역 또는 전역 이름이 없을 때 발생하는 예외입니다.
  5. TypeError: 연산이나 함수가 부적절한 형의 객체에 적용되었을 때 발생하는 예외입니다.
  6. ValueError: 연산이나 함수가 올바른 형의 인자를 받았지만 값이 적절하지 않을 때 발생하는 예외입니다.
  7. KeyError: 딕셔너리에서 키가 발견되지 않을 때 발생하는 예외입니다.
  8. IndexError: 시퀀스에서 인덱스가 범위를 벗어날 때 발생하는 예외입니다.
  9. FileNotFoundError: 파일이나 디렉터리를 찾을 수 없을 때 발생하는 예외입니다.
  10. IOError: 입출력 연산 실패 시 발생하는 예외입니다.
  11. ZeroDivisionError: 0으로 나눌 때 발생하는 예외입니다.
  12. ArithmeticError: 모든 산술 연산과 관련된 예외의 범주입니다.
  13. AssertionError: assert 문이 실패할 때 발생하는 예외입니다.
  14. ImportError: import 문이 모듈을 로드할 수 없을 때 발생하는 예외입니다.
  15. RuntimeError: 런타임 에러가 발생했을 때 발생하는 예외입니다.
  16. TypeError: 연산이나 함수가 부적절한 형의 객체에 적용되었을 때 발생하는 예외입니다.
  17. UnicodeError: 유니코드와 관련된 에러의 범주입니다.

위에 17개는 파이썬의 일부 내장 예외들 중 일부에 불과합니다. 더 많은 예외 클래스들이 있을 수 있고, 사용자 정의 예외 클래스도 만들어 사용할 수 있습니다.

728x90
반응형