인프런 커뮤니티 질문&답변

마이구미님의 프로필 이미지

작성한 질문수

파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자

다중상속

try 와 except의 위치

작성

·

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 문이 이어서 실행됩니다.

이 차이로 인해 아마 원하는 동작을 안하셨을거 같아요, 이해가 안되신다면 다시 문의글 남겨주세요!

활용편에서 진행하는 강의는 소스코드를 다운로드 하거나 공유받으실수 있도록 고민해보겠습니다 ^^

감사합니다.