프로그래밍을 하다 보면 수많은 오류를 만나게 됩니다.
프로그래머는 이러한 오류를 제어해주어야 합니다.
제어해주지 않으면 사용자들은 오류를 만났을 때
프로그램 중지되고 영문을 알 수 없어 혼란스럽게 될 것입니다.
오류는 여러 상황에서 발생합니다.
본문에서는 어떤상황에 어떤 오류가 나는지는 다루지 않습니다만
공통적으로 오류가 발생하면 프로그램을 중단하고 오류 메시지를 보여줍니다.
# 기초적인 오류의 예 숫자를 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절 등을 통해 프로그램이 유연하게 진행되도록 코딩을 할 수 있습니다.