Python - 문제 미리보기

문제 2097

hard
다음 파일 처리 코드에서 예상되는 실행 순서로 올바른 것은 무엇인가요?
```python
try:
file = open("nonexistent.txt", "r")
print("1. 파일 열기 성공")
try:
content = file.read()
print("2. 파일 읽기 성공")
except:
print("3. 파일 읽기 실패")
finally:
print("4. 내부 finally")
file.close()
except FileNotFoundError:
print("5. 파일을 찾을 수 없음")
except:
print("6. 기타 파일 오류")
finally:
print("7. 외부 finally")
```
A. 1 → 2 → 4 → 7
B. 5 → 7
C. 1 → 3 → 4 → 7
D. 6 → 7

정답: B



⦁ 실행 흐름 분석:
1. `open("nonexistent.txt", "r")`에서 파일이 존재하지 않아 `FileNotFoundError` 발생
2. 첫 번째 `try` 블록에서 즉시 예외가 발생하므로 "1. 파일 열기 성공"은 출력되지 않음
3. `except FileNotFoundError` 블록이 실행되어 "5. 파일을 찾을 수 없음" 출력
4. 외부 `finally` 블록이 실행되어 "7. 외부 finally" 출력

⦁ 중요한 포인트:
⦁ 내부 `try-except-finally` 블록은 외부 `try`에서 예외가 발생했으므로 실행되지 않음
⦁ `finally` 블록은 해당 `try` 블록이 실행되어야만 작동함
⦁ 파일이 열리지 않았으므로 `file.close()`도 실행되지 않음
⦁ 구체적인 예외 타입(`FileNotFoundError`)이 일반적인 `except`보다 먼저 처리됨

💡 학습 팁

이 문제를 포함한 Python 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.