본문 바로가기

Langauge/Python

[Python] 7. 예외처리

728x90
반응형

예외(Exception)

예외란 코드 실행 도중 일어나는 에러를 말한다.

 

파이썬에서는 이러한 예외가 발생했을 때 처리하는 방법이 존재한다.

  • try 블럭 : 실행할 코드를 작성하는 블럭, try 블럭안에 try-except 블럭을 추가할 수 있다.
  • except 블럭 : 예외가 발생했을 때 실행할 코드를 작성하는 블럭
  • else 블럭 : 정상 실행 시 try 블럭 실행 후 실행할 코드를 작성하는 블럭
  • finally 블럭 : 예외가 발생하거나 발생하지 않을 경우에도 실행할 코드를 작성하는 블럭

 

기본 흐름

정상 실행 시   에러 발생 시
O try O
X except O
O else X
O finally O

 

 

예외의 종류

파이썬이 내장하고 있는 예외는 다음과 같다.

 

Built-in Exceptions

In Python, all exceptions must be instances of a class that derives from BaseException. In a try statement with an except clause that mentions a particular class, that clause also handles any excep...

docs.python.org

 

 

사용 예시

import sys
try:
    l1:list = [1,2,3,4,5]
    print(l1[6])
except IndexError as IE:
# as 로 별명을 지을 수 있다.
    print(IE)
    print("index를 벗어났습니다.",file=sys.stderr)
except KeyError as KE:
# except는 여러개 쓸 수 있다.
    print(KE,file=sys.stderr)
else:
    print("else 블럭입니다.")
finally:
    print("finally 블럭입니다.")

 

 

raise() 함수를 사용해 예외를 발생 시킬 수 있다.

# raise [Exception [, args [, traceback]]]

# raise : 예외 발생

# raise 예외 클래스 : 지정한 예외 발생

# raise 예외 클래스("에러 메시지") : 지정한 예외 발생하고 에러 메시지 출력

raise IndexError("hello")

 

 

커스텀 예외 작성

  • Exception 클래스를 상속받아 클래스를 작성하여 커스텀 예외를 만들 수 있다.
import sys

class MyException(Exception):
    def __init__(self, *args: object) -> None:
        super().__init__(*args)
    
raise MyException("My custom error")

 

 

assert 키워드로 현재 상태가 맞는지 확인 할 수 있다.

  • 맞을 경우 넘어감
  • 아닐경우 AssertionError 발생
# assert 검사할 것, 예외 시 보여줄 메시지
# assert 1 < 10, "10 is bigger than 1" # 맞음
assert 1 > 10, "1 is bigger than 10" # 틀림

728x90
반응형

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

[Python] 연산 속도 올리기 - 개요 및 알고리즘과 자료구조  (0) 2024.09.12
[Python] 8. 파일 처리  (0) 2023.02.11
[Python] 6. 클래스와 모듈  (0) 2023.02.11
[Python] 5. 함수  (0) 2023.02.10
[Python] 4. 내장 자료형  (0) 2023.02.10