프로그래밍언어/Python

파이썬 - 예외처리

멍토 2020. 1. 19.

구문오류 : 해석 단계에서 발생, 잘못된 명령을 입력해 발생함

=> 오타나 문법적으로 필수적인 요소가 빠지진 않았는지 찾아 재코딩해야함

 

예외(exception) : 실행 단계에서 발생, 실행중 예기치 않게 발생함

=> 인덱스에러, 타입에러, 벨류에러 등등


예외의 발생시 해결방법

if 문을 이용한 예외의 처리
try~except문을 이용한 예외의 처리
try~except~else 문을 이용한 예외의 처리
try~excpet ~else~finally문을 이용한 예외의 처리

if 문을 이용한 예외의 처리

1. 정수입력 만을 받고싶을때 isdigit() 함수를 이용해 확인해서 체크
정수라면 True를 리턴하고 그외의 값이라면 False를 리턴

예외 발생시 해결 방법

try~except문 예외가 발생했을때 처리    
try ~ except~ else문 예외가 발생했을때 처리 예외가 발생하지 않았을때 처리  
try~excpet~else~finally문 예외가 발생했을때 처리 예외가 발생하지 않았을때 처리 예외 발생과 상관없이 실행
try :
    명령문
except :
    예외 발생시 실행
else : 
    예외가 발생하지 않는 경우 실행
finally :
    예외가 발생하든 않하든 실행

 


예외 객체 : 코드를 실행중 오류가 발생하면 만들어진 것으로, 오류발생과 관련한 정보를 가지고 있음

try :
    명령문
except Exception as ex :
    예외 발생시 실행
    print(ex)
#예외상황을 객체에 저장해서 돌려줌
try :
    명령문
except ValueError as ve :
    벨류에러 발생시 실행
except ZeroDivisionError as ze :
    제수가 0일때 실행
except Exception as ex : 
    위의 예외상황이 아닐때 실행
#여러 except문을 이용한 예외 객체에 따른 처리의 분기

강제 예외 발생 : 특정 조건에서 예외 객체를 만들어 예외를 일으킬 수 있음

def func()
    if 조건문 체크 : 
        값리턴
    else :
        raise ValueError("숫자가 아닌 값이 입력되었습니다.")
# raise 문을 이용해 강제로 ValueError 예외 상황을 일으킴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def input_index():
   num = 0
   try:
      num = int(input("인덱스를 사용할 숫자를 입력하세요: "))
   except ValueError as exception:
      raise exception
   else:
      return num
 
def print_in_bounds(lit, index):
   value = 0
   try:
       value = lit[index]
   except IndexError as exception:
      print("{0} {1}".format(type(exception), exception))
      index = len(lit)-1
      print("인덱스는 0~ {0}까지 사용할 수 있습니다.".format(index))
      value = lit[index]
   finally:
      print("[{0}]: {1}".format(index, value))
 
 
data_list = list(range(111))
print("data_list: {0}".format(data_list))
try:
   num = input_index()
   print_in_bounds(data_list, num)
except ValueError as exception:
   print("{0}, {1}".format(type(exception),exception))
except Exception as exception:
   print(exception)

'프로그래밍언어 > Python' 카테고리의 다른 글

파이썬 - 자료구조(셋,딕셔너리)  (0) 2020.01.22
파이썬 - 모듈과 패키지  (0) 2020.01.20
파이썬 - 내장함수  (0) 2020.01.18
파이썬 - 함수의 기초  (0) 2020.01.17
파이썬 - 흐름과 제어(반복)  (0) 2020.01.16

댓글

💲 광고입니다.