Python 예외처리

Nicholas·2022년 4월 23일
0

Python

목록 보기
24/31
post-thumbnail

1. 예외처리란?

  • 프로그램이 실행도중 에러가 나오면 비정상적으로 종료된다
  • 이에 비정상적인 종료를 막기위해 예외처리를 진행한다.
  • 에러가 뜨면 무시하라는 명령어를 미리 설정한다면 비정상적인 종료를 막을 수 있다.

2. 대표적인 에러

2-1. ZeroDivisionError : 0으로 숫자를 나누려할때 생기는 오류

print(4 / 0)

>>> Traceback (most recent call last):
    File "예외처리.py", line 1, in <module>
    print(4 / 0)
    ZeroDivisionError: division by zero

2-2. IndexError : 리스트에서 없는 리스트를 호출할때 발생

a = [1, 2, 3]
print(a[4])

>>> Traceback (most recent call last):
    File "예외처리.py", line 2, in <module>
    print(a[4])
    IndexError: list index out of range

2-3. FileNotFoundError : 없는 파일을 열려고 할때 발생

f = open("text.txt", 'r')

>>> Traceback (most recent call last):
    File "예외처리.py", line 1, in <module>
    f = open("text.txt", 'r')
    FileNotFoundError: [Errno 2] No such file or directory: 'text.txt'

3. 오류에 대한 예외처리 방법

3-1. try +except

  • 오류가 생길 선언문에 try 처리하여 except로 빠져나오도록 한다.
  • 기본구조 :
     try :
         오류가 발생할 수 있는 구문
      except :
         오류발생시 출력할 구문
      else:
         오류가 발생하지 않으면 발생할 구문
      finally:
         오류가 발생하든 안하든 마자막에 실행

3-2. except 활용도 :

  • except
    - 어떤오류든 다 처리한다.
  • except 오류이름
    - 오류이름일때만 처리한다.
  • except Exception as 오류메세지를 받을 변수
    - 메새지를 받은 변수를 출력하면 어떤 오류인지 내용을 알 수 있다.
  • except 오류이름 as 오류메세지를 받을 변수
    - 해당오류이름과 같은 오류가 메세지형태로 변수에 들어간다.
try:
    print(4/0)
except Exception as e:
    print(e)

3-3. try + finally

  • finally는 예외발생여부와 상관없이 try문이 수행이되면 반드시 수행된다. 그래서 보통 리소스를 종료해야할때 많이쓴다.

3-4. except 여러개 사용 : except문 마다 선언한 구문

  • 별도로 여러개를 사용하는 이유:
    각 오류별로 출력해주는 메세지가 다를수 있어서 여러개 사용한다. 또는 필요한 오류만 골라잡고 싶을때 사용한다

4. 오류 회피

  • except로 오류가나는지점에 오류를 잡고 그다음에 pass를 넣어주면 오류가 그냥 지나간다.
try:
    print(4/0)
    a = [1, 2, 3]
    print(a[4])
except:
    pass

5. 강제 오류 발생시키기 : raise문

  • 예외처리시 특별한 메세지/액션을 주고 싶을때

5-1. 사용방법

  • 에러를 강제로 발생해야될 구역을 try로 감싸고 예외를 처리해야하기때문에 except문을 넣어준다
  • 그리고 오류발생 할 구간에 raise문을 넣어 오류를 발생시킨다

5-2. 강제오류발생이후 예외처리 전 메시지 출력할경우

  • raise문에 Exception("오류시 전달할 메세지 입력"),
  • 단, 이때는 excetp문은 오류내용에대한 메시지출력을해줘야 raise문에 메세지를 출력한다.
try:
    a = input("4글자이하만 입력 :")
    if len(a) > 4:
        raise Exception("4글자이하만 입력하시오")
except Exception as e:
    print(e)

5-3 강제 오류발생이후 예외처리 후 메시지를 출력해야할 경우

  • raise문만 넣고 excetp로 예외처리한 후에 오류시 전달할메세지 출력
try:
    a = input("4글자이하만 입력 :")
    if len(a) > 4:
        raise
except:
    print("네글자 이하로 입력하세요")
profile
WEB Developer

0개의 댓글