Python에서 예외를 처리하는 가장 간단하고 기본적인 방법은 try-except 블록을 사용하는 것입니다. 프로그램 실행 중 발생할 수 있는 오류(예외)를 미리 예측하고, 이를 적절히 처리함으로써 프로그램이 비정상적으로 종료되는 것을 방지할 수 있습니다.
try-except 블록의 기본 구조
try-except 블록은 다음과 같은 방식으로 동작합니다.
- try 블록: 오류가 발생할 가능성이 있는 코드를 작성합니다.
- except 블록: try 블록에서 특정 예외가 발생했을 때 실행될 코드를 작성합니다.
- else 블록(선택 사항): try 블록에서 예외가 발생하지 않았을 경우에만 실행됩니다.
예제 코드
아래 예제는 파일을 열고 쓰기를 시도하는 코드입니다. 파일이 읽기 모드("r")로 열렸기 때문에 쓰기 작업 시 IOError가 발생하며, except 블록이 이를 처리합니다.
try:
fob = open("test.txt", "r")
fob.write("This is my test file for exception handling!!")
except IOError:
print("Error: can't find the file or read data")
else:
print("Write operation is performed successfully on the file")
fob.close()
실행 결과
Error: can't find the file or read data
코드 설명
위 코드의 실행 흐름은 다음과 같습니다.
- 파일 "test.txt"가 읽기 모드(r)로 열립니다.
- 읽기 전용으로 열린 파일에 쓰기를 시도하므로 IOError 예외가 발생합니다.
- 예외가 발생하면 except 블록의 에러 메시지가 출력되고, else 블록은 건너뛰어집니다.
만약 파일이 쓰기 가능한 모드(예: "w")로 정상적으로 열리고 쓰기 작업이 성공하면, else 블록이 실행되어 성공 메시지가 출력된 후 파일이 닫힙니다.
추가 팁: finally 블록 활용하기
예외 발생 여부와 관계없이 반드시 실행해야 하는 코드(예: 파일 닫기, 리소스 해제)가 있다면 finally 블록을 함께 사용하는 것이 좋습니다.
try:
fob = open("test.txt", "r")
fob.write("This is my test file for exception handling!!")
except IOError:
print("Error: can't find the file or read data")
finally:
fob.close()
print("File closed")
finally 블록은 try 블록에서 예외가 발생하든 발생하지 않든 항상 실행되므로, 리소스 누수를 방지하는 데 매우 유용합니다.