ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 17. 예외처리
    공부합시다!/python 2023. 2. 16. 00:14
    728x90

    언어를 활용하다 보면 문법적 오류가 발생하기도 하고

    코드의 실행과정에서 발생하는 Error를 처리하기도 해야 합니다.

    이를 예외처리라고 합니다.

    오늘은 예외처리에 대해서 살펴보겠습니다.

     

    '''
    다양한 Exceptions
     1. Python 예외 종류
     2. 문법적 에러 발생 실습
     3. 런타임 에러 발생 실습
     4. Try-Except-else-finally
    '''
    
    # 예외 종류
    # 문법적으로는 에러가 없지만, 코드 실행(런타임)프로세스에서 발생하는 예외 처리도 중요
    # linter: 코드 스타일, 문법 체크
    
    # syntax Error: 잘못된 문법
    
    #print('Test)
    # f True
    #  pass
    # x => y
    
    # Name Error: 참조변수 없음
    a = 10
    b = 15
    
    # print(c)
    
    # ZeroDivisionError: 0 나누기 에러
    # print(10 / 0)
    
    # Index Error: 인덱스 범위 오버
    x = [1, 2, 3]
    print(x[0])
    # print(x[3])
    
    # Key Error
    dic = {'name': 'Kim', 'Age': 33, 'City': 'Seoul'}
    # print(dic['hobby'])
    print(dic.get('hobby'))
    
    # AttributeError: 모듈, 클래스에 잇는 잘못된 속성 사용시에 예외
    
    import time
    print(time.time())
    #print(time.month())
    
    # ValuError: 참조 값이 없을 때 발생
    x = [1, 5, 9]
    #x.remove(10)
    #x.index(4)
    
    # FileNotFoundError
    #f = open('test.txt', 'r')
    
    # TyepError
    x = [1,2]
    y = (1,2)
    z = 'test'
    
    # print(x + y)
    # print(x + z)
    
    print(x + list(y))
    
    # 항상 예외가 발생하지 않을 것을 가정하고 먼저 코딩
    # 그 후 런타임 예외 발생 시 예외 처리 코딩 권장(EAFP 코딩 스타일)
    
    # 예외 기본 처리
    # try: error가 발생할 가능성이 있는 코드 실행
    # except: 에러명1
    # except: 에러명2
    # else: 에러가 발생하지 않았을 경우 실행
    # finally: 항상 실행
    
    # 예제 1
    name = ['kim', 'Lee', 'Park']
    
    try:
      z = 'kim'
      x = name.index(z)
      print('{} Found it: in name'.format(z, x+1))
    except ValueError:
      print("Not Found it! - Occurred ValueError!")
    else:
      print('OK! else!')
    
    # 예제 2
    
    try:
      z = 'Jin'
      x = name.index(z)
      print('{} Found it: in name'.format(z, x+1))
    except Exception:
      print("Not Found it! - Occurred Error!")
    else:
      print('OK! else!')
    
    
    # 예제 3
    try:
      z = 'kim'
      x = name.index(z)
      print('{} Found it: in name'.format(z, x+1))
    except ValueError:
      print("Not Found it! - Occurred ValueError!")
    else:
      print('OK! else!')
    finally:
      print('Finally OK!')
    
    
    # 예제 4
    try:
      print('Try')
    finally:
      print('OK Finally!!!!!')
    
    
    # 예제 5
    
    try:
      z = 'kim'
      x = name.index(z)
      print('{} Found it: in name'.format(z, x+1))
    except ValueError as l:
      print(l)
    except IndexError:
      print("Not Found it! - Occurred IndexError!")
    except Exception:
      print("Not Found it! - Occurred Error!")
    else:
      print('OK! else!')
    finally:
      print('Finally OK!!!!!!!!!!')
    
    # 예제 6
    # 예외 발생: raise
    # rais 키워드로 예제 직접 발생
    
    try:
      a= 'Kim'
      if a == 'Kim':
        print('OK 허가')
      else:
        raise ValueError
    except ValueError:
      print('문제 방생')
    except Exception as f:
      print(f)
    else:
      print('OK!')

    728x90

    '공부합시다! > python' 카테고리의 다른 글

    19. Excel 및 CSV 파일 다루기  (0) 2023.02.17
    18. File 다루기  (0) 2023.02.16
    16. Module과 Package  (0) 2023.02.14
    15. Class 상속  (0) 2023.02.13
    14. Class  (0) 2023.02.10
Designed by Tistory.