코드를 작성하다보면 수많은 오류를 마주하게 된다. 그러면 우리는 오류 메시지를 통해서 잘못된 부분을 수정해서 오류를 줄여나간다. 그런데, 때로는 실행 도중 오류가 발생하더라도 이를 무시한 채 수행하기를 원할 때도 있을 것이다. Python에서는 try와 execpt를 통해서 이러한 예외 처리를 할 수 있다. 일반적으로 오류가 발생하는 대표적인 경우는 0으로 다른 수를 나누는 경우(ZeroDivisionError), directory 내에 없는 파일을 열고자 하는 경우(FileNotFoundError), 그리고 리스트 범위를 넘어서는 부분을 얻고자 하는 경우(IndexError) 등이 속한다. 이러한 오류를 처리하기 위한 구문을 작성하는 방법은 다음과 같다.

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

오류 처리 구문 내의 대괄호 [ ]로 감싸진 부분은 생략 가능하며, except 구문을 사용하는 방법은 3가지가 있다.

 

1) try와 except만 작성한 구문 : 오류 종류와 관계없이 오류가 발생하면 except 구문 수행

2) 발생 오류를 추가한 구문 : except 구문에 입력한 오류 이름과 일치할 때만 except 구문 수행

3) 발생 오류와 오류 메시지 변수 모두 포함한 구문 : 발생한 오류에 대해 오류 메시지 내용까지 확인할 때 사용

 

3번째 경우에 대해 코드로 작성한 예시는 다음과 같다.

try:
    3 / 0
except ZeroDivisionError as error:
    print(error)

코드에서 3을 0으로 나누는 시도를 했지만 ZeroDivisionError가 발생해서 error라는 오류 메시지를 출력하도록 한 결과 division by zero라고 나타난 것이다.

 


오류가 발생하는 것에 대해 메시지를 확인하지 않고 해당 부분을 통과시키는 방법도 다음과 같이 존재한다.

try:
    file = open("text.txt", 'r')
except FileNotFoundError:
    pass

text.txt라는 파일이 존재하지 않더라도 일단 넘어가는 것이다.

추가로, 오류를 피하는 것에서 그치지 않고 raise를 사용해서 고의로 오류를 발생시키는 방법도 있다.

def division():
    num = int(input('Input number: '))
    if num % 3 == 0:                                
        raise Exception('3의 배수입니다.') 
    print(num)                                    

try:
    division()
except Exception as error:
    print('Error!', error)

위의 코드는 입력한 수가 3의 배수일 때 고의로 except 구문을 실행하도록 해서 오류 메시지가 출력되도록 한 것이다.

이와 같이 예외 처리를 통해 어디서 어떤 오류가 발생하는지에 대해 파악하며 작업을 진행하면 코드를 작성하는 데 도움이 될 것이다.

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기