Guidelines

μ•ˆμ „ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•œ μ˜ˆμ™Έ 처리 방법

ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€ 보면 예기치 μ•Šμ€ 였λ₯˜λ‚˜ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이런 μƒν™©μ—μ„œ ν”„λ‘œκ·Έλž¨μ΄ κ°‘μžκΈ° μ’…λ£Œλ˜μ§€ μ•Šκ³ , μ μ ˆν•œ λŒ€μ²˜λ₯Ό ν•˜λ €λ©΄ μ˜ˆμ™Έ μ²˜λ¦¬κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

이번 μˆ˜μ—…μ—μ„œλŠ” μ˜ˆμ™Έμ˜ κ°œλ…κ³Ό νŒŒμ΄μ¬μ—μ„œ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ˜ˆμ™Έλž€ λ¬΄μ—‡μΈκ°€μš”?

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ˜ˆμ™Έ(Exception)λŠ” μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ λ°œμƒν•˜λŠ” 예기치 μ•Šμ€ μƒν™©μ΄λ‚˜ 였λ₯˜λ₯Ό λœ»ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” νŒŒμΌμ„ μ—΄λ €κ³  ν•˜κ±°λ‚˜, μˆ«μžκ°€ μ•„λ‹Œ 값을 숫자둜 λ³€ν™˜ν•˜λ € ν•  λ•Œ μ˜ˆμ™Έκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ€ μ¦‰μ‹œ μ’…λ£Œλ˜λ©°, κ·Έ μ΄ν›„μ˜ μ½”λ“œκ°€ μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ μ˜ˆμ™Έ 처리λ₯Ό 톡해 μ΄λŸ¬ν•œ 였λ₯˜λ₯Ό μ˜ˆλ°©ν•˜κ±°λ‚˜ λ°œμƒν–ˆμ„ λ•Œ 적절히 λŒ€μ²˜ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.


νŒŒμ΄μ¬μ—μ„œ μ˜ˆμ™Έ μ²˜λ¦¬ν•˜κΈ°

νŒŒμ΄μ¬μ—μ„œλŠ” try, except, finally ꡬ문으둜 μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.


μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•˜λŠ” κΈ°λ³Έ ꡬ쑰, try와 except

try 블둝 μ•ˆμ— μ˜ˆμ™Έκ°€ λ°œμƒν•  κ°€λŠ₯성이 μžˆλŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³ , except λΈ”λ‘μ—μ„œ κ·Έ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.

μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ©΄ try λΈ”λ‘μ˜ λ‚˜λ¨Έμ§€ μ½”λ“œλŠ” μ‹€ν–‰λ˜μ§€ μ•Šκ³  κ³§λ°”λ‘œ except λΈ”λ‘μœΌλ‘œ λ„˜μ–΄κ°‘λ‹ˆλ‹€.

try와 except μ˜ˆμ‹œ
try: # μ‚¬μš©μžλ‘œλΆ€ν„° 숫자λ₯Ό μž…λ ₯λ°›μ•„ μ •μˆ˜ νƒ€μž…μœΌλ‘œ λ³€ν™˜ number = int(input("숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ")) # μž…λ ₯받은 숫자둜 10을 λ‚˜λˆ„μ–΄ result λ³€μˆ˜μ— μ €μž₯ result = 10 / number # κ²°κ³Ό 좜λ ₯ print(f"κ²°κ³Ό: {result}") # μ‚¬μš©μžκ°€ μˆ«μžκ°€ μ•„λ‹Œ 값을 μž…λ ₯ν–ˆμ„ λ•Œ ValueError μ˜ˆμ™Έ λ°œμƒ except ValueError: # μˆ«μžκ°€ μ•„λ‹Œ 값을 μž…λ ₯ν–ˆμ„ λ•Œ 좜λ ₯λ˜λŠ” λ©”μ‹œμ§€ print("숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”") # μ‚¬μš©μžκ°€ 0을 μž…λ ₯ν–ˆμ„ λ•Œ ZeroDivisionError μ˜ˆμ™Έ λ°œμƒ except ZeroDivisionError: # 0을 μž…λ ₯ν–ˆμ„ λ•Œ 좜λ ₯λ˜λŠ” λ©”μ‹œμ§€ print("0으둜 λ‚˜λˆŒ 수 μ—†μŠ΅λ‹ˆλ‹€")

μœ„ μ½”λ“œμ—μ„œλŠ” μ‚¬μš©μžκ°€ μˆ«μžκ°€ μ•„λ‹Œ 값을 μž…λ ₯ν–ˆμ„ λ•Œ ValueErrorκ°€ λ°œμƒν•˜λ©°, 0을 μž…λ ₯ν–ˆμ„ λ•ŒλŠ” ZeroDivisionErrorκ°€ λ°œμƒν•©λ‹ˆλ‹€.

각각의 μ˜ˆμ™Έλ₯Ό except λΈ”λ‘μ—μ„œ μ²˜λ¦¬ν•΄ ν”„λ‘œκ·Έλž¨μ΄ μ€‘λ‹¨λ˜μ§€ μ•Šλ„λ‘ ν•©λ‹ˆλ‹€.


무쑰건 μ‹€ν–‰λ˜λŠ” μ½”λ“œ, finally

finally 블둝은 μ˜ˆμ™Έ λ°œμƒ 여뢀와 관계없이 항상 μ‹€ν–‰λ˜λŠ” μ½”λ“œ λΈ”λ‘μž…λ‹ˆλ‹€.

이 블둝은 νŒŒμΌμ„ λ‹«κ±°λ‚˜, λ¦¬μ†ŒμŠ€λ₯Ό ν•΄μ œν•˜λŠ” λ“± ν”„λ‘œκ·Έλž¨μ΄ 끝날 λ•Œ λ°˜λ“œμ‹œ μˆ˜ν–‰λ˜μ–΄μ•Ό ν•˜λŠ” μž‘μ—…μ„ μ λŠ” κ³³μž…λ‹ˆλ‹€.

finally μ˜ˆμ‹œ
try: # example.txt νŒŒμΌμ„ 읽기 λͺ¨λ“œλ‘œ μ—΄κΈ° file = open("example.txt", "r") content = file.read() print(content) # 파일이 없을 λ•Œ FileNotFoundError μ˜ˆμ™Έ λ°œμƒ except FileNotFoundError: print("νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€") # μ˜ˆμ™Έ λ°œμƒ 여뢀와 상관없이 νŒŒμΌμ„ λ‹«μŒ finally: file.close() print("νŒŒμΌμ„ λ‹«μ•˜μŠ΅λ‹ˆλ‹€")

μœ„ μ½”λ“œ μ˜ˆμ œμ—μ„œ μ—΄λžŒν•˜λ €λŠ” 파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ FileNotFoundErrorκ°€ λ°œμƒν•˜μ§€λ§Œ, finally 블둝은 μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ”λΌλ„ νŒŒμΌμ„ λ‹«λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

이처럼 finallyλŠ” μ½”λ“œμ˜ 마무리 μž‘μ—…μ„ μœ„ν•΄ μ‚¬μš©ν•©λ‹ˆλ‹€.

Mission
0 / 1

νŒŒμ΄μ¬μ—μ„œ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©λ˜λŠ” κΈ°λ³Έ κ΅¬μ‘°λŠ” λ¬΄μ—‡μΈκ°€μš”?

if, else
for, while
try, except
def, return

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result