목차

    프로그래밍언어/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

      댓글