프로그래밍/python

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

마루의 일상 2024. 3. 26. 01:36
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
반응형