작성
·
249
0
선생님 안녕하세요.
9번째 퀴즈를 풀다가 예외처리 구문에 대한 궁금증이 생겨서 질문남깁니다.
선생님의 답안을 보기전 스스로 퀴즈를 풀어보았을 때의 제 코드는,
class SoulOutError(Exception):
pass
try:
chicken = 10
watiting = 1
while(True):
어쩌구저쩌구
break
except ValueError:
어쩌구
except SoulOutError:
저쩌구
이런 식이었습니다.
당연하게도(?) 제대로 작동하지 않았고, 해설을 듣고나니 궁금증이 생겨서요.
try 와 except 가 동일한 위계(?)위상(?)인 것은 알겠는데
그 위치가 while문 안으로 들어가야 한다는 것은 어떻게 알 수 있나요?
try-except가 while문 안으로 들어가면 해당 while문 내에서만 영향을 미치고,
while문 밖에 쓰일 경우 try-except 사이에 해당하는 모든 구문에 try-except가 영향을 미치는 것이 아닌가 싶었는데, (=결국 이 문제에서는 두 가지가 동일한 결과일 것이라고 예측함)
그렇다면 제가 쓴 코드도 정상작동 해야하는 것 아닌가요ㅠㅠ?
어디서 부터 잘못된 것인지...흑흑
여담이지만, 매 챕터 마지막에 있는 퀴즈를 풀다보니
선생님께서 왜 직접 해보는게 중요하다고 말씀하셨는지 이해가 갑니다.
강의를 들으며 코드를 그대로 따라서 작성해보는 것도 물론 좋은 공부가 되지만,
퀴즈를 풀면서 배운 걸 적용해보고,
그 과정에서 잘못 이해했던 부분을 발견하고 오류를 수정하며
배운 내용을 복습할 기회를 갖고 더 확실하게 알아갈 수 있네요.
이렇게 좋은 강의를 듣을 수 있게 해주셔서 감사합니다 :)
아, 그리고 한가지 작은 건의사항이 있다면
다음에 제작하시는 강의에서는 선생님이 작성하신 코드를 다운받을 수 있었으면 좋겠습니다!
강의 후반부로 갈수록 코드가 길어져서 전체 코드를 확인하며 제 코드의 오류를 찾고 싶을 때 동영상을 이리저리 넘기면서 확인해야하는 약간의 어려움이 있더라구요.
기본편을 완강하고 다음에 나올 활용편도 꼭 듣고싶은 의지를 불태우며 바래보는
아주 작은 소망입니다...☞☜
답변 2
0
0
안녕하세요
"try-except가 while문 안으로 들어가면 해당 while문 내에서만 영향을 미치고,
while문 밖에 쓰일 경우 try-except 사이에 해당하는 모든 구문에 try-except가 영향을 미치는 것이 아닌가 싶었는데"
아주 잘 이해하셨습니다 ^^ 작성하신 코드가 어떻게 동작을 안하는지는 모르겠지만, try except 의 위치가 while 문 밖에 있거나 안에 있거나의 차이는,
1. 밖에 있을때 에러 상황이 발생하면 except 가 실행되고 while 문은 더이상 실행되지 않게 됩니다.
2. 안에 있을때 에러 상황이 발생하면 except 가 실행되고 계속해서 while 문이 이어서 실행됩니다.
이 차이로 인해 아마 원하는 동작을 안하셨을거 같아요, 이해가 안되신다면 다시 문의글 남겨주세요!
활용편에서 진행하는 강의는 소스코드를 다운로드 하거나 공유받으실수 있도록 고민해보겠습니다 ^^
감사합니다.