파이썬 예외 처리

2021. 8. 24. 10:56·Python/Syntax

예외 처리

예외

  • 기본적으로 예외가 발생하면 프로세스가 종료된다.

예외 처리

  • 예외 발생을 감지하고 대처할 수 있다.

    try:
        실행할 명령
    except 예외 as 변수:
        오류 처리문
    [else: # 없어도 됨
        예외가 발생하지 않을 때의 처리]
    scores = ["89", "89점"]
    
    try:
        for score in scores:
            score_int = int(score)
            print(score_int)
    except:
        print("예외가 발생했습니다.")
    print("작업완료")
    
    ''' stdout
    89
    예외가 발생했습니다.
    작업완료
    '''
  • 예외 종류

    예외 설명
    NameError
    ValueError 값의 형식이 잘못됐을 때
    ZeroDivisionError 0으로 나눴을 때
    IndexError 인덱싱 가능한 범위를 벗어났을 때
    TypeError
  • except 키워드 뒤에 인자를 받지 않으면 모든 예외를 처리한다.

  • 예외에 alias를 붙이는 경우 except Exception as e와 같이 작성한다.

    str = "89"
    try:
        score = int(str)
        print(score)
        a = str[5]
    except Exception as e:
        print(e)
    print("작업완료")
    
    ''' stdout
    89
    string index out of range
    작업완료
    '''
  • raise

    • 예외를 발생시키는 키워드

      def calcsum(n):
          if n < 0 :
              raise ValueError("음수는 처리 불가")
      
          total = 0
          for i in range(n+1):
              total += i
      
          return total
      
      try:
          print(f"~ 10 = {calcsum(10)}")
          print(f"~ -5 = {calcsum(-5)}")
      except Exception as e:
          print("입력값이 잘못되었습니다.")
          print(e)
          print(type(e))
      
      ''' stdout
      ~ 10 = 55
      입력값이 잘못되었습니다.
      음수는 처리 불가
      <class 'ValueError'>
      '''

자원 정리

  • finally

    • 예외 발생 여부와 상관없이 항상 실행할 코드를 의미한다.

    • 주로 작업의 마무리 작업(cleanup)을 수행할 때 사용한다.

      from random import choice
      
      def connect():
          try:
              print("네트워크 접속")
              a = 2 / choice((0, 2))
              print("네트워크 통신 수행")
          except Exception as e:
              print(f"에러 : {e}")
          finally:
              print("접속 해제")
      
          print("작업 완료\n")
      
      connect()
      connect()
      connect()
      
      ''' stdout
      네트워크 접속
      에러 : division by zero
      접속 해제
      작업 완료
      
      네트워크 접속
      네트워크 통신 수행
      접속 해제
      작업 완료
      
      네트워크 접속
      네트워크 통신 수행
      접속 해제
      작업 완료
      '''
  • assert (단정문)

    • 조건이 True이면 통과, False이면 메시지를 가지는 예외를 발생시킨다.

    • 주로 테스트할 때 사용한다.

      score = 128
      
      assert score <= 100, "점수는 100 이하여야 합니다."
      
      # if score > 100:
      #     raise AssertionError("점수는 100 이하여야 합니다.")
      
      print(score)
      
      ''' stdout
      Traceback (most recent call last):
      File "파일명", line 3, in <module>
          assert score <= 100, "점수는 100 이하여야 합니다."
      AssertionError: 점수는 100 이하여야 합니다.
      '''
저작자표시 (새창열림)

'Python > Syntax' 카테고리의 다른 글

파이썬 모듈과 패키지  (0) 2021.08.24
파이썬 파일  (0) 2021.08.24
파이썬 표준 모듈  (0) 2021.08.24
파이썬 컬렉션 관리  (0) 2021.08.24
파이썬 집합(Set)  (0) 2021.08.22
'Python/Syntax' 카테고리의 다른 글
  • 파이썬 모듈과 패키지
  • 파이썬 파일
  • 파이썬 표준 모듈
  • 파이썬 컬렉션 관리
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 분류 전체보기 (317)
      • Algorithm (13)
        • 알기 쉬운 알고리즘 (10)
        • Search (1)
        • Sort (2)
      • Arduino (0)
      • C++ (185)
        • Class (46)
        • Exception (6)
        • Library (51)
        • Overloading (10)
        • SmartPointer (5)
        • Syntax (33)
        • TBC++ (23)
        • Templates (9)
        • VisualStudio (2)
      • Embedded (1)
      • Git (4)
      • Java (5)
      • Linux (16)
        • Error (1)
        • Linux Structure (11)
      • MacOS (7)
      • OS (1)
        • Concurrency (1)
      • Python (21)
        • Class (1)
        • Function (2)
        • Syntax (17)
      • Raspberrypi (9)
      • Review (1)
      • Utility (12)
        • VSCode (5)
        • VirtualBox (3)
      • Web (8)
        • Nginx (1)
        • React (3)
        • Django (1)
      • Windows (20)
        • Registry (3)
        • WSL (1)
        • DeviceDriver (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    로지텍 마우스 제스처
    그림판
    spring
    unix
    스프링
    맥북 카카오톡 알림 안뜸
    Workspace
    스프링 프레임워크 핵심 기술
    알림
    윈도우
    MacOS
    dism
    제외
    SunOS 5.1
    windows
    citrix workspace
    KakaoTalk
    vscode
    mspaint
    EXCLUDE
    Solaris 10
    시스템 복구
    logi options
    java
    윈도우 명령어
    SFC
    백기선
    Windows 11
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
파이썬 예외 처리
상단으로

티스토리툴바