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
๋ณ์๋ฅผ ํตํด ์ฌ์ฉํ ์ ์์ด. ์ถ๋ ฅ์ ์ค๋ฅ ์ ํ๊ณผ ์์ธ ์์ฑ ์ ์ ๋ฌ๋ ์ธ์๋ฅผ ํฌํจํ ๊ฑฐ์ผ.
GO TO FULL VERSION