본문 바로가기
IT/python

파이썬 예외처리

by 뉴코딩맨 2023. 6. 2.
파이썬에서 예외처리(exception handling)는 프로그램 실행 중 발생할 수 있는 예외 상황을 감지하고 적절히 처리하는 메커니즘입니다. 예외는 실행 중에 발생하는 오류나 예기치 않은 상황을 나타내며, 이러한 예외를 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있습니다. 파이썬의 예외처리에 대해 알아보고, try-except 문을 통한 예외 처리 방법을 다루겠습니다.
 
 

try-except 문

try-except 문은 예외가 발생할 수 있는 코드를 감싸고, 예외가 발생하면 해당 예외를 처리하는 코드 블록을 실행합니다. 예외가 발생하지 않으면 try 블록 안의 코드가 순차적으로 실행됩니다. 기본적인 try-except 문의 구조는 다음과 같습니다.
 
try:
	# 예외가 발생할 수 있는 코드
except 예외종류 as 예외변수:
	# 예외 처리 코드
 
예외가 발생하면 해당 예외와 일치하는 except 블록이 실행됩니다. 예외 종류를 지정하지 않으면 모든 예외에 대해 처리할 수 있습니다. as 키워드를 사용하여 예외 객체를 변수에 할당할 수 있습니다.
 
try:
	x = 10 / 0
except ZeroDivisionError as e:
    print("0으로 나눌 수 없습니다.")
    print(e)

 

 

finally 절

finally 절은 try-except 문의 옵션으로, 예외 발생 여부와 상관없이 항상 실행되는 코드 블록입니다. 주로 리소스 정리 등의 마무리 작업을 수행하는데 사용됩니다.
 
try:
	# 예외가 발생할 수 있는 코드
except 예외종류 as 예외변수:
	# 예외 처리 코드
finally:
	# 항상 실행되는 코드
 
file = open("data.txt", "r")
try:
    # 파일 읽기 작업 수행
    data = file.read()
except FileNotFoundError:
	print("파일이 존재하지 않습니다.")
finally:
	file.close()

 

 

예외 발생과 raise

프로그램 실행 중에 개발자가 직접 예외를 발생시킬 수도 있습니다. raise 키워드를 사용하여 특정 예외를 강제로 발생시킬 수 있습니다.
 
def divide(x, y):
	if y == 0:
		raise ZeroDivisionError("0으로 나눌 수 없습니다.")
	return x / y
 
try:
	result = divide(10, 0)
except ZeroDivisionError as e:
	print(e)

 

 

사용자 정의 예외

파이썬에서는 사용자가 직접 예외 클래스를 정의하여 사용할 수도 있습니다. 사용자 정의 예외는 기본 예외 클래스인 Exception 클래스를 상속받아 만들 수 있습니다.
 
class MyException(Exception):
	pass
    
try:
	raise MyException("사용자 정의 예외 발생")
except MyException as e:
	print(e)

 

 

else 절

try-except 문에는 else 절을 추가할 수도 있습니다. else 절은 예외가 발생하지 않았을 때 실행되는 코드 블록입니다.
 
try:
	# 예외가 발생할 수 있는 코드
except 예외종류 as 예외변수:
	# 예외 처리 코드
else:
	# 예외가 발생하지 않았을 때 실행되는 코드
 
try 블록의 코드가 예외 없이 실행되면 else 블록이 실행됩니다. 이를 활용하여 예외 발생 여부에 따라 다른 동작을 수행할 수 있습니다.

 

 

결론

파이썬의 예외처리에 대해 알아보았습니다. 예외처리는 프로그램의 안정성을 높이고 예외 상황에 대한 적절한 대응을 할 수 있도록 도와줍니다. try-except 문을 통해 예외를 처리하고, finally 절을 사용하여 마무리 작업을 수행할 수 있습니다. 또한, 사용자 정의 예외를 만들어 특정 상황에 대한 예외를 발생시킬 수 있습니다. 예외처리를 적절히 활용하여 안정적이고 견고한 프로그램을 작성해보세요.
 

'IT > python' 카테고리의 다른 글

파이썬 dir 함수  (0) 2023.06.04
파이썬 matplotlib 패키지  (0) 2023.06.03
파이썬 클래스(class)  (0) 2023.06.02
파이썬 glob 모듈  (0) 2023.06.02
파이썬 pickle 모듈  (0) 2023.06.01

댓글