Data Science/python

예외 처리 구문 : try-except 구문

jay3108 2021. 12. 24. 16:17

1. try-except문

파이썬 예외 처리의 기본구문

try:

   예외 발생 가능 코드

except 예외 타입:

   예외 발생 시 실행되는  코드

# 얘만 알고 있으면 됨 : 크롤링할 때 쓰임
for i in range(10):
    try:
        print(10 / i)
    except ZeroDivisionError:
        print("Not divided by 0")

Not divided by 0
10.0
5.0
3.3333333333333335
2.5
2.0
1.6666666666666667
1.4285714285714286
1.25
1.1111111111111112

2. raise문

try-except문과 달리 필요할 때 예외를 발생시키는 코드

에러가 발생헀을 때, 입력이 잘못된 것을 알려 주면서 종료하는 것

raise 예외 타입("예외 정보")

while True:
    value = input("변환할 정수값을 입력해 주세요: ")
    for digit in value:
        if digit not in "0123456789":
            raise ValueError("숫자값을 입력하지 않았습니다.")
    print("정수값으로 변환된 숫자: ", int(value))
    
변환할 정수값을 입력해 주세요: 15
정수값으로 변환된 숫자:  15
변환할 정수값을 입력해 주세요: 16354
정수값으로 변환된 숫자:  16354
변환할 정수값을 입력해 주세요: 숫자
변환할 정수값을 입력해 주세요: 15
정수값으로 변환된 숫자:  15
변환할 정수값을 입력해 주세요: 16354
정수값으로 변환된 숫자:  16354
변환할 정수값을 입력해 주세요: 숫자
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_2696/3242170852.py in <module>
      3     for digit in value:
      4         if digit not in "0123456789":
----> 5             raise ValueError("숫자값을 입력하지 않았습니다.")
      6     print("정수값으로 변환된 숫자: ", int(value))

ValueError: 숫자값을 입력하지 않았습니다.

3. assert문

assert True or False 결과값이 나오는 함수 -> 간단하게 예외 발생

def get_binary_nmubmer(decimal_number):
    assert isinstance(decimal_number, int)  # 입력값이 특정 클래스의 인스턴스인지
    return bin(decimal_number) #bin() 정수를 이진수로 바꾸는 함수

print(get_binary_nmubmer(7))
0b111

print(get_binary_nmubmer("7"))
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_2696/2556258275.py in <module>
----> 1 print(get_binary_nmubmer("7"))

~\AppData\Local\Temp/ipykernel_2696/3219244234.py in get_binary_nmubmer(decimal_number)
      1 def get_binary_nmubmer(decimal_number):
----> 2     assert isinstance(decimal_number, int)  # 입력값이 특정 클래스의 인스턴스인지
      3     return bin(decimal_number)

AssertionError: