CodeGym /Java Course /Python SELF KO /์—ฌ๋Ÿฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

์—ฌ๋Ÿฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

Python SELF KO
๋ ˆ๋ฒจ 17 , ๋ ˆ์Šจ 3
์‚ฌ์šฉ ๊ฐ€๋Šฅ

4.1 ์—ฌ๋Ÿฌ ์˜ˆ์™ธ ์žก๊ธฐ

Python์—์„œ๋Š” ์—ฌ๋Ÿฌ except ๋ธ”๋ก์ด๋‚˜ ์˜ˆ์™ธ ํŠœํ”Œ์ด ์žˆ๋Š” ํ•˜๋‚˜์˜ except ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด. ๋‘˜ ๋‹ค ์•Œ์•„๋ณด์ž.

์—ฌ๋Ÿฌ except ๋ธ”๋ก

์—ฌ๋Ÿฌ except ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์˜ˆ์™ธ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด.


try:
    # ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ
    result = int("abc")
except ValueError:
    print("์˜ค๋ฅ˜: ์ž˜๋ชป๋œ ๊ฐ’.")
except ZeroDivisionError:
    print("์˜ค๋ฅ˜: 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ.")

์˜ˆ์™ธ ํŠœํ”Œ์ด ์žˆ๋Š” ํ•˜๋‚˜์˜ except ๋ธ”๋ก

์—ฌ๋Ÿฌ ์˜ˆ์™ธ๋ฅผ ํ•˜๋‚˜์˜ except ๋ธ”๋ก์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ์˜ˆ์™ธ๋ฅผ ํŠœํ”Œ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์–ด.


try:
    # ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ
    result = int("abc")
except (ValueError, ZeroDivisionError) as e:
    print(f"์˜ค๋ฅ˜ ๋ฐœ์ƒ: {e}")

except NameError as var ์‚ฌ์šฉํ•˜๊ธฐ

์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ, ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด except <ExceptionType> as <variable> ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋ฐ ๊ธฐํƒ€ ์†์„ฑ๊ณผ ๊ฐ™์€ ์˜ˆ์™ธ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด.


try:
    # NameError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ
    print(undeclared_variable)
except NameError as e:
    print(f"์˜ค๋ฅ˜ ๋ฐœ์ƒ: {e}")
    print(f"์˜ค๋ฅ˜ ํƒ€์ž…: {type(e)}")

4.2 ์˜ค๋ฅ˜ ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„

์˜ˆ์™ธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜ (e ์œ„ ์˜ˆ์ œ์—์„œ)๋Š” ์ž์‹ ์˜ except ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด. ์ด ๋ธ”๋ก ๋ฐ–์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด.


try:
    # NameError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ
    print(undeclared_variable)
except NameError as e:
    print(f"์˜ค๋ฅ˜ ๋ฐœ์ƒ: {e}")
    print(f"์˜ค๋ฅ˜ ํƒ€์ž…: {type(e)}")
# ์—ฌ๊ธฐ์„œ e๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ , ๋‹ค์Œ ์ค„์€ NameError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฑฐ์•ผ
# print(e)  # NameError: name 'e' is not defined

์˜ˆ์™ธ๋ฅผ ๋ธ”๋ก ๋ฐ–์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ณ„๋„์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•ด์•ผ ํ•ด. ์˜ˆ์ œ:


exception = None
try:
    # ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ
    result = int("abc")
except ValueError as e:
    exception = e
    print("์˜ค๋ฅ˜: ์ž˜๋ชป๋œ ๊ฐ’.")
except ZeroDivisionError as e:
    exception = e
    print("์˜ค๋ฅ˜: 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ.")

print(exception)

exception ๋ณ€์ˆ˜๋Š” ๋งˆ์ง€๋ง‰์— ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ์ ์„ ์ฃผ์˜ํ•ด. ์ด๋Š” try ๋ธ”๋ก ๋ฐ–์—์„œ์˜ ํ›„์† ์ฒ˜๋ฆฌ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ์–ด.

4.3 ์˜ค๋ฅ˜์— ์žˆ๋Š” ์œ ์šฉํ•œ ์ •๋ณด

์˜ˆ์™ธ ๊ฐ์ฒด๋Š” ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด. ์˜ˆ์™ธ ์œ ํ˜•์— ๋”ฐ๋ผ ๊ฐ์ฒด๋Š” ๋‹ค์–‘ํ•œ ์†์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด.

๋‹ค์Œ์€ ๋Œ€๋ถ€๋ถ„์˜ ์˜ˆ์™ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์†์„ฑ๋“ค:

  • args: ์˜ˆ์™ธ ์ƒ์„ฑ ์‹œ ์ „๋‹ฌ๋œ ์ธ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ํŠœํ”Œ. ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํฌํ•จํ•ด.
  • message: ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด (์ผ๋ถ€ ์˜ˆ์™ธ์—์„œ).
  • __str__: ์˜ˆ์™ธ์˜ ๋ฌธ์ž์—ด ํ‘œํ˜„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ. ์ด ๋ฉ”์†Œ๋“œ๋Š” ์˜ˆ์™ธ ๊ฐ์ฒด์— ๋Œ€ํ•ด print() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ํ…์ŠคํŠธ ํ‘œํ˜„์„ ์–ป๋Š” ๋ฐ ์‚ฌ์šฉ๋ผ.

์˜ˆ์ œ:


try:
    # ValueError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ
    result = int("abc")
except ValueError as e:
    print(f"์˜ค๋ฅ˜ ๋ฐœ์ƒ: {e}")
    print(f"์˜ค๋ฅ˜ ์ธ์ˆ˜: {e.args}")
    print(f"์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: {str(e)}")

์—ฌ๋Ÿฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์˜ˆ์ œ


try:
    # ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ
    result = 10 / 0
except (ValueError, ZeroDivisionError) as e:
    print(f"์˜ค๋ฅ˜ ๋ฐœ์ƒ: {e}")
    print(f"์˜ค๋ฅ˜ ํƒ€์ž…: {type(e)}")
    print(f"์˜ค๋ฅ˜ ์ธ์ˆ˜: {e.args}")

ValueError ๋˜๋Š” ZeroDivisionError๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด except ๋ธ”๋ก์— ์˜ํ•ด ์žกํžˆ๊ฒŒ ๋ผ. ์˜ˆ์™ธ์— ๊ด€ํ•œ ์ •๋ณด๋Š” e ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด. ์ถœ๋ ฅ์€ ์˜ค๋ฅ˜ ์œ ํ˜•๊ณผ ์˜ˆ์™ธ ์ƒ์„ฑ ์‹œ ์ „๋‹ฌ๋œ ์ธ์ˆ˜๋ฅผ ํฌํ•จํ•  ๊ฑฐ์•ผ.

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION