본문 바로가기
Cording/Python_Basic

Python] 에러 및 예외 처리 기본 / 응용 방법 - 코드 포함

by €€£¥ 2023. 1. 1.

코딩을 하다 보면 오류를 만나게 되기 마련이다. 오류가 발생하는 건 프로그램의 오작동을 방지하기 위한 것이지만 때로는 필요에 의해 발생하는 오류를 무시하고 프로그램을 진행시켜야 할 필요가 있는 때도 있다. 이를 위해 파이썬에는 예외 처리 기능이 있다. 

 

1. Python 예외 처리 기본 구조

가장 정석적인 구조라고 판단되는 Python 에러 발생시의 예외처리 구조는 아래와 같다.

  1. try : 수행해야할 내용을 입력한다 -> 에러가 발생하지 않는다면 그대로 실행될 내용. 
  2. except : try 구문에서 에러가 발생할 경우 실행될 내용.
  3. else : try 구문에서 에러가 발생하지 않았다면 실행될 내용.
  4. finally : try 구문의 내용이 에러가 있든 없든 상관없이 마지막에 실행될 내용.
# Python 예외처리 기본 구조

try: 
	수행할 내용
except:
	에러 발생 시 수행할 내용
else:
	정상 작동 시 수행할 내용
finally:
	마지막으로 수행할 내용 (에러 여부와 상관 없이 항상 수행되는 내용)

가장 간단하게는 아래와 같이  'try'와 'except' 구문만 사용하여 단순히 오류를 회피하는 방법도 있다. 

# 오류 회피하기

try: 
	수행 내용
excpt:
	pass # 오류가 있더라도 오류를 발생시키지 않고 통과시킴

 

2. Python 예외처리 예문

간단한게 위에서 말한 Python 에러 발생시 예외처리 구문의 기본 구조를 알기쉬운 예를 들어 설명해보면 아래와 같다. 에러가 발생하는 경우와 에러가 발생하지 않는 경우의 실행 구조를 참고하면 빠르게 이해가 될 것 같다.

# Python 예외처리 예문

try: 
	result = num_1 / num_2
	print(f'계산 결과는 {result}입니다.')
except:
	print('에러가 발생했음')
else:
	print('정상 동작했음')
finally:
	print('수행종료')

a. num_1 = 3,  num_2 = 0 의 경우

result = 3 / 0  --> 숫자를 0 으로 나눌 수 없기 때문에 에러가 발생

>> 'except' 구문 실행 : '에러가 발생했음'

>> 'finally' 구문 실행 : '수행종료'

 

b. num_1 = 3,  num_2 = 1 의 경우

result = 3 / 1 = 3의 값 변수로 저장

>> 'try' 구문 실행 : '계산 결과는 3입니다.'

>> 'else' 구문 실행 : '정상 동작했음'

>> 'finally' 구문 실행 : '수행종료'

 

 

3. Python 에러 발생 예외처리 응용

예외처리 응용이라고 하기에는 조금 부족한 감이 있지만, 에러가 발생할 경우 에러 발생 내용을 명시해주는 기능을 사용할 수 있다. 아래의 코드를 참고하자. 아래의 코드에  num_1 = 4,  num_2 = 0의 변수값이 주어졌다면 아래의 코멘트가 출력 될 것이다. 

"에러가 발생했어요: division by zero"
# 에러 발생 원인 코멘트

try : 
	result = num_1 / num_2
    print(f'계산 결과는{result}입니다.')
except Exception as err_com:
	print('에러가 발생했어요:', err_com)
   
>> 에러가 발생했어요 : 에러내용(err_com의 내용)

추가로 에러가 발생했을 때, 에러의 원인에 따라 다른 내용을 수행시켜줄 수 도 있다. 아래의 코드와 같이 에러의 원인 별로 except 구문을 별도로 만들어주면 된다. 

# 에러의 종류에 따라 에러 원인 코멘트도 가능함

try : 
	result = num_1 / num_2
    print(f'연산 결과는{result}입니다.')
except ZeroDivisionError:
	print('0으로는 나눌 수 없음')
except TypeError:
	print('값의 형식이 잘못 됨')
except Exception as err_com:
	print('에러가 발생했어요:', err_com)

구글에서  python exceptions 를 검색하면 다양한 에러의 종류 및 설명을 확인 가능하니 참고하면 좋을 듯하다. 

본 포스팅에 이어 아래의 포스트에서 '에러를 발생시키는 방법'과 '에러를 만들어 사용하는 방법'에 대해 추가로 알아보겠다. 

Python] 일부러 에러 발생 시키기 직접 예외 만들기 - 예외 처리 응용 코드 포함

 

댓글