[Python] 파이썬 try except / raise 예외처리 개념이해

파이썬 프로그래밍을 하다보면 수많은 예외(Exception)가 발생하게 됩니다.

 

이럴 경우를 대비해서 우리는 예외처리를 하게 됩니다.

 

자바에서는 try catch 예외문을 사용하게 되는데요

 

파이썬에서는 try except 예외문을 사용합니다.

 

except 예외처리를 사용할때 예측가능한 예외이면 예측가능한예외를 사용하면 되지만,

 

예측이 불가능한 것이 올 수 있다고 생각하시면, except Exception으로 작성하시면 됩니다.

 

파이썬 예외처리 방법

try:
  divide = 100 / 0  

except Exception as e: #오류 예외를 알수 없을경우
 print("error : ", e)

except ZeroDivisionError as e: #숫자를 0으로 나눌경우 ZeroDivisionError
  print("숫자를 0으로 나눌 수 없습니다.")
  print(e)  

except IndexError as e: # 인덱스 범위 벗어난경우 IndexError
  print("인덱스가 범위를 벗어났습니다.")
  print(e)

except KeyError as e: # 매핑이 발견되지 않은경우 KeyError
  print("매핑(딕셔너리)키가 기존 키 집합에서 발견되지 않습니다.")
  print(e)  

except NameError as e: # 지역또는 전역이름을 못찾는경우 NameError
  print("지역 또는 전역 이름을 찾을 수 없습니다.")
  print(e)   
...
...
기타등등

 

실행결과 : 숫자를 0으로 나눌 수 없습니다. division by zero

 

그러면 이번에는 강제로 exception 을 발생시켜 볼게요.

raise Exception()를 사용하여서 강제예외처리를 할수 있습니다.

 

파이썬 강제 예외처리 방법

try:

  a = 50
  b = 40
  
  if int(a) + int(b) != 100 :
    raise Exception("합이 100이 아닙니다.")  

except Exception as e:
  print(e)  

실행결과 : raise Exception 을 정상적으로 처리되었습니다. 합이 100이 아닙니다.

 

예외르 종류는 아래 링크로 들어가시면 더 자세하게 확인 하실 수 있습니다.

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

 

내장 예외 — Python 3.8.3rc1 문서

내장 예외 파이썬에서, 모든 예외는 BaseException 에서 파생된 클래스의 인스턴스여야 합니다. 특정 클래스를 언급하는 except 절을 갖는 try 문에서, 그 절은 그 클래스에서 파생된 모든 예외 클래스�

docs.python.org

 

파이썬 예외처리방법에 대해 알아보았습니다.

 

다음에는 더 좋은 포스팅으로 돌아올게요!

댓글

Designed by JB FACTORY