λ°˜μ‘ν˜•

μ˜ˆμ™Έ 처리 (Exception Handling)

μ˜ˆμ™Έ μ²˜λ¦¬λŠ” μ½”λ“œ μ‹€ν–‰ 쀑 λ°œμƒν•  수 μžˆλŠ” 였λ₯˜ 상황을 μ²˜λ¦¬ν•˜λŠ” 방법이닀.

try, except, finally ꡬ문을 μ‚¬μš©ν•˜μ—¬ μ˜ˆμ™Έ λ°œμƒ μ‹œ μ½”λ“œλ₯Ό μ•ˆμ „ν•˜κ²Œ μ’…λ£Œν•˜κ±°λ‚˜ νŠΉμ • λ™μž‘μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€.

 

1. 기본적인 μ˜ˆμ™Έ 처리 ꡬ쑰

try:
    # μ˜ˆμ™Έκ°€ λ°œμƒν•  κ°€λŠ₯성이 μžˆλŠ” μ½”λ“œ
except ExceptionType:
    # μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμ„ λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
else:
    # μ˜ˆμ™Έκ°€ λ°œμƒν•˜μ§€ μ•Šμ•˜μ„ λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ
finally:
    # μ˜ˆμ™Έ λ°œμƒ 여뢀와 상관없이 항상 μ‹€ν–‰λ˜λŠ” μ½”λ“œ

 

  • try: μ˜ˆμ™Έκ°€ λ°œμƒν•  κ°€λŠ₯성이 μžˆλŠ” μ½”λ“œλ₯Ό μž‘μ„±. 예λ₯Ό λ“€μ–΄ νŒŒμΌμ„ μ—΄κ±°λ‚˜, 숫자λ₯Ό 0으둜 λ‚˜λˆ„λŠ” λ“±μ˜ μž‘μ—…μ΄ 포함될 수 μžˆλ‹€.
  • except: μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμ„ λ•Œ μ‹€ν–‰ν•  μ½”λ“œλ₯Ό μž‘μ„±. λ°œμƒν•œ μ˜ˆμ™Έ μœ ν˜•μ— 따라 μ—¬λŸ¬ 개의 except 블둝을 지정할 μˆ˜λ„ μžˆλ‹€.
  • else: μ˜ˆμ™Έκ°€ λ°œμƒν•˜μ§€ μ•Šμ•˜μ„ λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±. elseλŠ” 선택 μ‚¬ν•­μœΌλ‘œ, try 블둝이 μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλœ κ²½μš°μ—λ§Œ μ‹€ν–‰λœλ‹€.
  • finally: μ˜ˆμ™Έ λ°œμƒ 여뢀와 상관없이 항상 μ‹€ν–‰λ˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±. νŒŒμΌμ„ μ—΄μ—ˆλ‹€λ©΄ λ‹«λŠ” μž‘μ—…μ„ 여기에 넣을 수 μžˆλ‹€.

# 예제 μ½”λ“œ 

μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 숫자λ₯Ό 100으둜 λ‚˜λˆ„λŠ” ν”„λ‘œκ·Έλž¨μœΌλ‘œ,μ—¬κΈ°μ„œ λ°œμƒν•  수 μžˆλŠ” ValueError와 ZeroDivisionError μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•˜λŠ” μ½”λ“œ

try:
    num = int(input("숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: "))
    result = 100 / num
except ValueError:
    print("μœ νš¨ν•œ μˆ«μžκ°€ μ•„λ‹™λ‹ˆλ‹€. 숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.")
except ZeroDivisionError:
    print("0으둜 λ‚˜λˆŒ 수 μ—†μŠ΅λ‹ˆλ‹€.")
else:
    print(f"κ²°κ³Ό: {result}")
finally:
    print("ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.")
  • try λΈ”λ‘μ—μ„œλŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값을 μ •μˆ˜λ‘œ λ³€ν™˜ν•œ ν›„, 100을 κ·Έ κ°’μœΌλ‘œ λ‚˜λˆ„λŠ” 연산을 μˆ˜ν–‰.
  • except ValueError 블둝은 μ‚¬μš©μžκ°€ μˆ«μžκ°€ μ•„λ‹Œ 값을 μž…λ ₯ν–ˆμ„ λ•Œ μ‹€ν–‰λ˜λ©°, "μœ νš¨ν•œ μˆ«μžκ°€ μ•„λ‹™λ‹ˆλ‹€"λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯.
  • except ZeroDivisionError 블둝은 μ‚¬μš©μžκ°€ 0을 μž…λ ₯ν–ˆμ„ λ•Œ μ‹€ν–‰λ˜λ©°, "0으둜 λ‚˜λˆŒ 수 μ—†μŠ΅λ‹ˆλ‹€"λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯.
  • else 블둝은 μ˜ˆμ™Έκ°€ 없을 경우 μ‹€ν–‰λ˜λ©°, λ‚˜λˆ—μ…ˆ κ²°κ³Όλ₯Ό 좜λ ₯.
  • finally 블둝은 μ˜ˆμ™Έ λ°œμƒ 여뢀와 관계없이 항상 μ‹€ν–‰λ˜λ©°, "ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€"λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯.

이와 같은 μ˜ˆμ™Έ 처리 λ°©μ‹μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ€ 였λ₯˜ μƒν™©μ—μ„œλ„ μ•ˆμ „ν•˜κ²Œ μž‘λ™ν•  수 μžˆλ‹€.

 

 

 

 

λ°˜μ‘ν˜•

+ Recent posts