Python try except, finally

프로그래밍을 하다 보면 수많은 오류를 만나게 됩니다.

프로그래머는 이러한 오류를 제어해주어야 합니다.

 

제어해주지 않으면 사용자들은 오류를 만났을 때

프로그램 중지되고 영문을 알 수 없어 혼란스럽게 될 것입니다.

 

오류는 여러 상황에서 발생합니다.

본문에서는 어떤상황에 어떤 오류가 나는지는 다루지 않습니다만

공통적으로 오류가 발생하면 프로그램을 중단하고 오류 메시지를 보여줍니다.

# 기초적인 오류의 예 숫자를 0으로 나누는 경우
>>> 3 / 0
Traceback (most recent call last):   
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

 

1. try, except문 

오류 처리를 위해 try, except문을 사용합니다.

>>> try:
...    #code
... except:
...    #try내에서 에러발생시 수행할 code

try블록 수행 중 오류가 발생하면 except블록이 실행됩니다.

 

특정에러만 제어하고 싶은 경우에는 아래처럼 except 옆에 에러명을 붙여 사용합니다.

>>> try:
...    3/0
... except ZeroDivisionError:
...    print('error')
'error'

 

특정 에러 및 오류 메시지까지 알고 싶을 때는 아래처럼 사용합니다.

>>> try:
...    3/0
... except ZeroDivisionError as ex:
...    print(ex)
division by zero

 

 

2. try, finally

try문에는 finally절을 통해 항상 실행될 코드를 작성할 수 있습니다.

finally 절은 try문 수행 도중 예외 발생 경우와 상관없이 항상 실행됩니다.

보통 리소스를 close할때 많이 사용됩니다.

>>> fileA = open('file.txt', 'w')
>>> try:
...    #code
... except:
...    print('error')
... finally:
...    fileA.close()

fileA에 대해 에러가 발생하든 안 하든 열린 파일을 닫을 수 있습니다.

 

3. try, else

try문에는 else절을 사용해 except절이 수행되지 않을 때

즉 에러가 발생하지 않을때 실행할 코드를 따로 작성할 수 있습니다.

>>> try:
...    ... #code
... except:
...    ... #에러시 실행할 code
... else:
...    ... #에러 발생하지 않을시 실행할 code

 

try문에 except, finally, else절 등을 통해 프로그램이 유연하게 진행되도록 코딩을 할 수 있습니다.