카테고리 없음

파이썬 try, except 이해하기 (초급, 중급)

마켓랩 2023. 10. 3. 22:49

코딩을 하시면서 에러 없이 한번에 생각한 것을 한번에 만들어 본 적이 있으신가요? 에러의 정도가 심각하지 않아 그냥 넘어가고 싶거나, 에러를 if문으로 처리하기에는 다소 까다로운 상황에 처하게 될 때가 있으실거에요. 그럴때 딱! 쓰기 좋은 코드가 있습니다. 바로 try, except입니다. 전 이 코드를 알게되고 프로그래밍에 적용하면서 개발 속도가 엄청 빨라졌습니다. 하지만, 또 너무 남용하게되면 디버깅 실력이 점점 줄어들 뿐만 아니라, 어느 부분에서 에러가 발생했는지 찾는데 한참의 시간을 쏟아야할 수도 있습니다. 자! 그러면 어떤 상황에 어떻게 사용할 수 있는지 한번 배워보도록 하겠습니다. ^^

 

사용법

number1 = 1004
number2 = '1'

try:
    # 에러가 발생할 수 있는 코드
    number3 = number1 + number2
    print('코드 성공')
    print(number3)
except:
    # 에러 이 후 부분의 코드를 건너뛰고 밑에 코드적용
    number3 = number1 + int(number2)
    print('코드 실패 후 적용됨')
    print(number3)
   

사용법은 간단합니다. 에러가 발생할 것 같은 코드에 "try:"를 넣어주시고 에러발생 시 적용할 코드를 "except:"에 넣어주시면 됩니다. 위 코드를 실행시키면 아래의 결과 값을 얻을 수 있습니다.

 

int형태의 number1과 str형태의 number2를 더하기 할 수 없으니 당연히 에러가 발생합니다. except코드로 넘어간 뒤 str형태의 number2를 int형태로 바꿔준 후 number3의 결과 값 '1005'를 출력합니다.

 

 

옵션1 (else, finally)

number1 = 1004
number2 = 2

try:
    # 에러가 발생할 수 있는 코드
    number3 = number1 + number2
    print('코드 성공')
    print(number3)
except:
    # 에러 발생 시 try 부분의 코드를 건너뛰고 밑에 코드적용
    number3 = number1 + int(number2)
    print('코드 실패 후 적용됨')
    print(number3)
else:
    # 에러가 발생하지 않은 경우 실행할 코드
    print('코드성공 후 else부분 코드 적용')
   
finally:
    # 마지막에 항상 실행되는 정리 코드
    print('finally는 마지막에 무조건 출력하는 부분')

위 코드를 간단히 설명하면 number1,2 모두 int형태이고 더하기가 가능합니다. try 부분 코드가 모두 에러없이 적용된 후 else코드로 넘어갑니다. 그리고 finally부분으로 넘어가면서 코드가 종료됩니다. 결과 값은 아래와 같습니다.

 

 

옵션2 (Exception as e)

number1 = 1004
number2 = '1'

try:
    # 에러가 발생할 수 있는 코드
    number3 = number1 + number2
    print('코드 성공')
    print(number3)
except Exception as e:
    # 에러 발생 시 try 부분의 코드를 건너뛰고 밑에 코드적용
    print('코드가 실패한 이유: {}'.format(e))

위 코드는 이전에 설명 드린데로 int와 str의 더하기가 불가능하므로 에러가 발생합니다. 여기서 단순히 "except:"만 적용한다면 정확한 에러의 이유를 알 수가 없습니다. 따라서 위와 같이 "except Exception as e:"와 같은 코드를 넣어주고 "e"를 출력하면 아래와 같은 결과 값을 얻을 수 있습니다.

 

결론

파이썬의 try, except는 에러를 더욱 유연하게 대처할 수 있는 유용한 기능입니다. 이제는 에러가 더 이상 두렵지 않겠죠? try, except로 더욱 세련된 코드를 적용하시고 개발속도도 함께 올려보자구요. ^^ 그럼 모두 즐거운 코딩하세요.