본문 바로가기
Python

파이썬 - try, except문

by IT두잇 2022. 3. 16.

오류 처리 기법인 try, except문에서는 try 조건 수행 중 오류 발생 시 except 조건이 수행됩니다.

 

작성방법:

try:
    ...
except [발생 오류[as 오류 메세지 변수]]:
    ...

 

except 구문을 작성하는 방법에는 3가지가 있습니다.

 

1. try, except 만 사용하는 방법

오류 종류에 상관없이 오류가 발생하면 except 문을 수행합니다. 

try:
    ...
except: 
    ...

 

2. 발생 오류만 포함한 except문

발생한 오류가 except 문에 작성한 오류와 일치할 때만 except문을 수행합니다.

try:
    ...
except 발생오류:
    ...

 

3. 발생 오류와 오류 메세지 변수를 포함한 except문

2번째 내용에서 오류 메세지의 내용을 알고 싶을 때 사용하는 방법입니다.

try:
    ...
except 발생오류 as 오류메세지변수:
    ...

아래의 경우, try문에 에러가 없어서 try문 그대로 출력되었습니다.

a = [10,11,12]

try:
    for i in range(4):
        print(a[i])
except:
    pass

결과값:

10

11

12

 

하지만 아래 조건에서는 a[4]번째의 인덱스 값이 없기 때문에, 인덱스 에러가 발생합니다.

a=[1,2,3]
try:
    for i in range (4):
        print(a[i])

except IndexError as e:
    print(e)

결과값:

1 2 3 list index out of range

 

두 에러 중 어떤 에러가 날지 확실하지 않은 경우, except문을 두 번 작성해주었습니다.

try:
    4/0
except IndexError as e:
    print(e)
except ZeroDivisionError as e:
    print(e)

결과값: division by zero

 

아래와 같이 에러가 두가지 있을 경우, 첫번째 에러가 출력되는 것을 확인할 수 있습니다.

두번째 except문의 경우 에러가 발생하면 ‘0으로 나누었습니다’ 라는 메세지를 출력하도록 했습니다.

try:
    a =[1]
    print(a[3])
    4/0
except IndexError as e:
    print(e)
except ZeroDivisionError:
    print('0으로 나누었습니다.')

결과값: list index out of range

 

두 에러 이름을 묶어서 한번에 처리해줄 수도 있습니다.

try:
    a =[1]
    print(a[3])
    4/0
except (IndexError, ZeroDivisionError):
    print('Hello Error')

결과값: Hello Error

 


try, except문에서 사용할 수 있는 에러의 종류 확인할 수 있는 사이트:

https://docs.python.org/3/library/exceptions.html