본문 바로가기

코딩/파이썬

5분 파이썬(12) - 오류를 대비하기 위한 try

반응형

열심히 코드를 작성하고 프로그램을 실행했는데

오류가 발생하면 프로그램이 멈춥니다.

 

이때 예상치 못한 오류에 대응하기 위한 문법이 try입니다.

다른 말로는 예외처리라고도 합니다.

 

먼저 예제부터 살펴볼까요?

try:
    print("4"/1)
except:
    print("오류발생")

위 예제는 문자 "4"에 숫자1을 나누었을 때 발생하는 오류에 대응하기 위한 코드입니다.

여러분도 알다싶이 문자는 연산이 불가능합니다.

컴퓨터에서도 마찬가지라서 문자를 숫자로 연산하려하면 TypeError라는 오류가 발생합니다.

 

위 예제에서도 마찬가지로 TypeError가 발생하며, 오류 발생 시 except문에 들어있는 print함수가 실행됩니다.

 

다른 예제를 살펴보겠습니다.

try:
    print("4"/1)
except TypeError:
    print("타입에러발생")

이전 예제와 거의 비슷한데 except 옆에 TypeError가 붙어있습니다.

이 경우 TypeError가 발생했을 때만 except문에 들어있는 print 함수가 실행됩니다.

 

이걸 응용하면 아래와 같은 예제도 만들어볼 수 있습니다.

try:
    print("4"/1)
    arr=[1,2,3]
    print(arr[5])
except TypeError:
    print("타입에러발생")
except IndexError:
    print("인덱스에러발생")

위 예제에서는 TypeError와 IndexError가 발생했을 때 print 함수를 실행합니다.

IndexError는 인덱스 값이 범위를 벗어났을 때 발생합니다.

예를 들면 배열에 데이터가 3개만 들어있는데 인덱스값을 5로 주면 오류가 발생합니다.

왜냐하면 배열에 데이터가 3개뿐이라 인덱스값이 5인 데이터가 존재하지 않기 때문입니다.

 

또다른 예제를 살펴보겠습니다.

try:
    print("4"/1)
except TypeError as errMsg:
    print("타입에러발생")
    print(errMsg)

이번엔 except TypeError옆에 as errMsg가 추가되었습니다.

이 경우 TypeError가 발생하면 as 뒤에 있는 errMsg 변수에 에러 메시지가 할당됩니다.

print를 이용해 errMsg를 출력해주면 에러 메시지를 확인할 수 있습니다.

 

다음 예제는 else문입니다.

try:
    data = 4/1
except TypeError as errMsg:
    print("타입에러발생")
    print(errMsg)
else:
    print(data)
    print("정상출력")

에러가 발생하지 않았을때 코드를 실행하고 싶다면 else문에 해당 코드를 넣어주면 됩니다.

 

마지막 예제입니다.

try:
    data = "4"/1
except TypeError as errMsg:
    pass

print("오류무시")

위 예제에서는 pass를 사용했는데, pass를 사용하면 오류가 발생해도 무시하고 넘어갑니다.

그리고 try문 밖에 있는 코드가 실행됩니다.

위 예제에서는 print함수가 실행됩니다.

 

여기까지의 강의 내용은 유튜브에서도 확인하실 수 있습니다.

https://youtu.be/Sytx1hhqg2Q

 

반응형