본문 바로가기
개발

python try/except와 raise 문

by developer's warehouse 2024. 1. 3.

Python에서는 raise 문을 사용하여 예외를 발생시킬 수 있습니다. 예외는 특정 오류 상황을 나타내는 객체로, 프로그램의 정상적인 흐름을 중단하고 예외 처리 코드로 제어를 이동시킵니다.

python try/except와 raise 문 썸네일

1. raise 문

다음은 ValueError 예외를 발생시키는 간단한 Python 코드입니다

raise ValueError("This is an error message")

 

위 코드는 ValueError 예외를 발생시키고, "This is an error message"라는 오류 메시지를 함께 전달합니다.

 

2. try/except 문

위와 같이 발생하는 예외는 try/except 블록으로 잡아낼 수 있습니다

try:
    raise ValueError("This is an error message")
except ValueError as e:
    print(f"Caught an exception: {e}")

 

위 코드는 ValueError 예외를 발생시키고, 이를 except 블록에서 잡아냅니다. 잡아낸 예외는 변수 e에 할당되고, 이를 사용하여 오류 메시지를 출력합니다. 이렇게 하면 예외가 발생했을 때 프로그램이 즉시 종료되는 것을 방지하고, 대신 예외를 적절하게 처리할 수 있습니다.

아래와 같이 에러를 Exception으로 받아서 처리하고 raise를 통해 예외를 상위로 전파할 수도 있습니다. 

    try:
        loadItems = (1 in w_ids)
        l = loader.Loader(driver, scaleParameters, w_ids, loadItems)
        driver.loadStart()
        l.execute()
        driver.loadFinish()
    except KeyboardInterrupt:
        return -1
    except (Exception, AssertionError) as ex:
        logging.warn("Failed to load data: %s", ex)
        raise

 

3. assert 문

반면 Python에서 assert 문은 주어진 조건이 참인지 확인하고, 그렇지 않으면 AssertionError를 발생시킵니다.

다음은 all_customers의 길이가 0이거나 그 이하 인지를 검사하는 코드입니다:

assert len(all_customers) <= 0

이 코드는 all_customers의 길이가 0이거나 그 이하일 때만 실행을 계속하며, 그렇지 않으면 AssertionError를 발생시킵니다. 만약 상위에 AssertionError에대한 예외 핸들러가 있다면 핸들러를 통해 처리됩니다. 

 

facebook twitter kakaoTalk kakaostory naver band shareLink