728x90
IOError
는 파일이나 입출력 작업 중 문제가 발생했을 때 발생하는 예외입니다. 특히 파일을 열고 처리하는 도중 예외가 발생해 파일이 제대로 닫히지 않으면 리소스 누수나 데이터 손실의 원인이 됩니다.
이 오류는 파일이 닫히지 않았다는 경고로 발생할 수 있으며, 예외 상황에 대한 적절한 처리가 필요합니다.
● 오류 발생 예시
f = open("test.txt", "w")
f.write("Hello")
raise Exception("문제 발생!")
f.close()
위 코드에서는 예외가 발생하여 f.close()
가 실행되지 않기 때문에 파일이 열려 있는 상태로 남습니다.
● 주요 원인
- 파일 작업 중 예외로 인해 닫히지 않음
- 파일을 수동으로 닫지 않거나, 예외 상황을 고려하지 않음
- 작업 중 중단되어 파일 핸들이 반환되지 않음
● 해결 방법
- 파일 처리를
with open()
구문으로 대체해 자동으로 닫히도록 처리 try-finally
구문을 통해 예외가 발생하더라도close()
보장
● 예시 코드 (정상 처리)
with open("test.txt", "w") as f:
f.write("Hello")
raise Exception("문제 발생!")
f = open("test.txt", "w")
try:
f.write("Hello")
raise Exception("문제 발생!")
finally:
f.close()
● 결론
파일 입출력은 항상 안정성을 고려해야 하며, 예외 발생 시에도 파일이 반드시 닫히도록 설계해야 합니다. with
문법은 이를 보장하는 가장 안전한 방식입니다.
728x90