Python

python3 - raise, assert 에러 발생시키기

얆생 2025. 3. 31. 18:40

1. raise

raise는 에러 발생시키고 싶은 곳 아무데나 작성해주면 된다.

 

  • 기본 raise 사용
a = int(input('1부터 5까지의 숫자를 입력하시오: '))

if a < 1 or a > 5:
    raise
print(f'입력한 a:{a}입니다.')

 

1부터 5까지의 숫자를 입력하시오: 0
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In[12], line 4
      1 a = int(input('1부터 5까지의 숫자를 입력하시오: '))
      3 if a < 1 or a > 5:
----> 4     raise
      6 print(f'입력한 a:{a}입니다.')

RuntimeError: No active exception to reraise

 

→ 위와 같이 에러 나타남

 

  • 에러 키워드에 맞게
a = int(input('1부터 5까지의 숫자를 입력하시오: '))

if a < 1 or a > 5:
    raise ValueError # 값에 대한 에러 메세지
print(f'입력한 a:{a}입니다.')

 

1부터 5까지의 숫자를 입력하시오: 0
 
 
 
  • 에러 메세지 별도 지정
a = int(input('1부터 5까지의 숫자를 입력하시오: '))

if a < 1 or a > 5:
    raise Exception('범위 내의 숫자가 아닙니다. 다시 입력하세요.')
print(f'입력한 a:{a}입니다.')

 

1부터 5까지의 숫자를 입력하시오: 0
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
Cell In[14], line 6
      3 a = int(input('1부터 5까지의 숫자를 입력하시오: '))
      5 if a < 1 or a > 5:
----> 6     raise Exception('범위 내의 숫자가 아닙니다. 다시 입력하세요.')
      8 print(f'입력한 a:{a}입니다.')

Exception: 범위 내의 숫자가 아닙니다. 다시 입력하세요.

 

 

  • 예외 처리 구문 try - except와 같이 쓰기
try:
    a = int(input('1부터 5까지의 숫자를 입력하시오: '))

    if a < 1 or a > 5:
        raise Exception('범위 내의 숫자가 아닙니다. 다시 입력하세요.')
    print(f'입력한 a:{a}입니다.')
except:
    print('다시 입력해달라고요.')

 

1부터 5까지의 숫자를 입력하시오: 0
다시 입력해달라고요.

 

→ try안에서 raise를 통해서 에러 발생

 

 

 

2. assert

  • 예외를 발생시키는 예외 처리와 비슷하지만, assert는 어떤 조건이 True임을 보증하기 위해 사용
  • raise와 비슷하지만 다름 >> raise는 만약 오류가 발생했을 때 "except와 함께 이렇게 처리해라"라는 뜻
  • assert는 "이 조건이 참일 때 코드는 내가 보장한다. 그러나 거짓이라는 것은 보증하지 않으므로 AssertionError를 발생시켜라"의 흐름이다.

 

  • 사용 방법
    • assert [조건], [오류메세지]
    • 조건이 True인 경우, 그대로 코드 진행
    • False인 경우 AssertionError와 함께 남길 메세지 (생략 가능)
# 예제 1

a = 10

#True인 경우
print("1. assert True인 경우")
assert a == 10, "a is not 10"

print('끝1')

 

#False인 경우
print('2. assert False인 경우')
assert a == 99, "a is not 99"

print('끝2')

 

2. assert False인 경우
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[4], line 3
      1 #False인 경우
      2 print('2. assert False인 경우')
----> 3 assert a == 99, "a is not 99"
      5 print('끝2')

AssertionError: a is not 99

 

→ 다음과 같이 내가 지정한 assertionError가 나옴

 

 

# 예제 2

age = int(input('나이를 입력하시오: '))

assert age >= 0, "나이가 마이너스인게 가능한가?"

print(f'당신의 나이는 {age}입니다.')
나이를 입력하시오: -1
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[8], line 5
      1 # 예제 2
      3 age = int(input('나이를 입력하시오: '))
----> 5 assert age >= 0, "나이가 마이너스인게 가능한가?"
      7 print(f'당신의 나이는 {age}입니다.')

AssertionError: 나이가 마이너스인게 가능한가?

 

 

출처: https://blockdmask.tistory.com/553

https://blockdmask.tistory.com/538