티스토리 뷰

어이가 없다.

신약개발 AI 모델 와랄루과학자로서 자라나기 위해 꿈과 열의를 가지고 인터넷 강의를 수강중에 일어난 일이다. 분명 코드를 똑같이 베껴적은 것 같은데 강사님 모델은 학습이 되고, 내 모델은 학습이 안되더라. 하아... 하루이틀 일은 아니지만 이런 날들이 반복되니 지칠때도 있다. 그러나 포기하지 않겠다. 

각설하고!!

try except 문을 사용할 땐 특히 오타를 주의하자!! 먼저 아래의 코드를 보자 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
= [1,2,3]
 
print(sum(a))
print(Sum(a))
 
try:
    print(sum(a))
except:
    print("none")
 
try:
    print(Sum(a))
except:
    print("none")
cs

 

리스트의 합을 구하는 sum() 함수를 이용하면 쉽게 리스트 내부 값들의 합을 구할 수 있다. 3번 라인의 sum(a)는 정상적으로 6이라는 결과를 주지만, 오타를 내면 Sum(a)이라는 함수는 아래와 같이 NameError를 뱉는다.

따라서 우리는 쉽게 오타를 낸 부분을 찾을 수 있다.

그런데 이번엔 try except문 내부에서 똑같은 오타를 내보자.

에러 없이 그냥 실행이된다.

print로 출력했을때처럼 NameError를 뱉지 않고 그냥 except처리를 해서 "none"이라는 값을 뱉어낸다. 이렇게 되면 어떤 문제가 있을지 주인장보다는 똑똑할 가능성이 상당히 높은 당신은 아셨으리라 생각한다.

내 리스트 내부에 실제로 잘못된 값이 들어있어서 none을 뱉은 것이 아니라, 그냥 오타 때문에 try문이 실행되지 못하고 except문이 실행되었다. 지금이야 데이터가 하나뿐이니 눈에 들어오지만, 만약 데이터가 엄청나게 많은 경우라면? 그리고 특히 나에게 익숙하지 않은 데이터라면? 아마 문제를 파악하려면 나처럼 하루 반나절을 태워먹어야 할 수도 있다.

먼저 try except문을 실행시킨다면, try, except문을 실행한 결과를 확인해보고 모든 결과가 except문을 실행시킨 결과라면 try문에 사용한 함수에 '오타'가 있는지를 꼼꼼히 확인해야겠다.

댓글