파이썬/파이썬(python) 중급

[30-3 파이썬] 예외처리 raise 키워드

Olivia-BlackCherry 2022. 9. 19. 17:06

raise 키워드?

어떤 상황에서,

코드의 정상작동유무와는 관계없이

에러무조건 발생시키는 키워드이다. 

 

try:
    text = "1234"
    print(text + 4)

except TypeError as typeError:
    print(f"{typeError}")

else:
    print(text + 4)
finally:
    raise KeyError("내가 만든 키에러입니다.")

>>

    raise KeyError("내가 만든 키에러입니다.")
KeyError: '내가 만든 키에러입니다.'

 

 

 

어떤 상황에서 raise 키워드를 쓸까?

한 예로써, 

어떤 입력값을 받았을 때

해당 값이 상식적으로 적절하지 않은 경우

의도적으로 예외를 생성할 수 있다.

height = float(input("키를 입력하시오"))
weight = int(input("몸무게를 입력하시오"))

bmi = weight / height **2
print(bmi)

위의 경우 키와 몸무게를 입력하여 bmi를 계산한다. 

그런데 입력값으로 키 300, 몸무게 50을 입력한다면

상식적으로 적절하지 않은 입력값이다고 판단할 수 있다. 

이런 경우 결과적으로 틀린 값을 생성해낸다.

 

그런데 코드 자체에는 문제가 없기 때문에 에러를 발생시키지 않는다.

 

이런 경우에 raise 키워드로 나만의 에러를 발생시킬 수 있다.

 

 

 

어떻게 만들까?

raise  에러유형("에러에 대한 설명")

height = float(input("키를 입력하시오"))
weight = int(input("몸무게를 입력하시오"))
bmi = weight / height **2
if height >300:
    raise ValueError("입력값이 잘못되었습니다. 키의 입력값이 너무나도 큽니다.")

print(bmi)

>>    

raise ValueError("입력값이 잘못되었습니다. 키의 입력값이 너무나도 큽니다.")
ValueError: 입력값이 잘못되었습니다. 키의 입력값이 너무나도 큽니다.