try를 잘못 이해한거 같은데, try는 간단함. 파이썬 프로그램 돌리는데 잘못 짜거나 한 부분 나오면 에러 메시지 뜨고 종료되잖아? try는 만약 try를 통해 명시적으로 지정한 코드 블록에서 그런 에러가 발생하면 except로 지정한 블록으로 대신 넘어가라고 말하는거임.
익명(125.137)2021-10-15 00:25
답글
그런데 니 코드는 아무리 봐도 try 안에서 에러가 뜰 일이 없어보이니 당연히 except로 넘어가는 일도 안 발생하는거지.
내 생각에 이런 일이 발생한거 같음. iterator에 더 이상 남은 원소가 없을 때 StopIteration exception이 발생하는건 맞음. 하지만, for 루프에서 그게 발생했을 경우에는 그 순간 for 루프가 더 이상 body를 실행하지 않고 그냥 끝내기 때문에 그 body 안에 try except을 사용해도 걸리는게 없는거인거 같음.
익명(125.137)2021-10-15 00:40
답글
만약 for 루프가 아니라 while 루프 안에서 직접 iterator의 next 메소드를 호출하면서 돌리는 경우에는 StopIteration exception을 루프 body 안에서 핸들링할 수도 있을거 같음.
익명(125.137)2021-10-15 00:42
답글
ㄷㄷ 어캐찾앗노 난 찾아도안뜨던데... 고마워.. while로 한번만드러볼꼐,,,
익명(126.94)2021-10-15 00:43
오차피 for문이 종료되었단건 2가 나왔단 거니까 ㅇㅅㅇ... 오히려 if문 놓으면 2 나오고 바로 종료되서 안될듯
선생님.. if문을 쓰세요
if 문으로 에러 설정할수잇음?ㅇㅅㅇ
님은 오류가 아니라 2 나왔을때 걸러내는거잔슴
구니깐 StopIteration이루 할려햇징
저거는 그냥 2가 나오면 for문을 탈출하는거 아닌가? - dc App
에러가 뜨는게 아니라 - dc App
근데 사실 if문 쓸 필요도 없이 그냥 for문종료하고 난뒤 bomb하면 됨 ㅇㅅㅇ
try를 잘못 이해한거 같은데, try는 간단함. 파이썬 프로그램 돌리는데 잘못 짜거나 한 부분 나오면 에러 메시지 뜨고 종료되잖아? try는 만약 try를 통해 명시적으로 지정한 코드 블록에서 그런 에러가 발생하면 except로 지정한 블록으로 대신 넘어가라고 말하는거임.
그런데 니 코드는 아무리 봐도 try 안에서 에러가 뜰 일이 없어보이니 당연히 except로 넘어가는 일도 안 발생하는거지.
for 문 빠져나올떄 StopIteration을 발생시키고 끝낸다고 나와잇어서
except로 잡ㅇ을수잇을까 햇는데 아닌건감
미친 진짜네!?
헐 시발 머리털 나고 처음 알았다
내가 지식이 부족한거 가지고 괜히 오해를 했구나. 미안하다.
안미안해도 갠차나...
https://stackoverflow.com/questions/14413969/why-does-next-raise-a-stopiteration-but-for-do-a-normal-return
이거 보니까 설명 잘 해주는거 같음
내 생각에 이런 일이 발생한거 같음. iterator에 더 이상 남은 원소가 없을 때 StopIteration exception이 발생하는건 맞음. 하지만, for 루프에서 그게 발생했을 경우에는 그 순간 for 루프가 더 이상 body를 실행하지 않고 그냥 끝내기 때문에 그 body 안에 try except을 사용해도 걸리는게 없는거인거 같음.
만약 for 루프가 아니라 while 루프 안에서 직접 iterator의 next 메소드를 호출하면서 돌리는 경우에는 StopIteration exception을 루프 body 안에서 핸들링할 수도 있을거 같음.
ㄷㄷ 어캐찾앗노 난 찾아도안뜨던데... 고마워.. while로 한번만드러볼꼐,,,
오차피 for문이 종료되었단건 2가 나왔단 거니까 ㅇㅅㅇ... 오히려 if문 놓으면 2 나오고 바로 종료되서 안될듯
https://m.dcinside.com/board/programming/1913700