νμ΄μ¬(Python) κΈ°μ΄ (15) EAFP error μμΈμ²λ¦¬ Try , except , raise
μ΄μ ν¬μ€ν μμ μλ¬μ μ’ λ₯μ λν΄μ λ€λ£¨μμ΅λλ€. νμ΄μ¬μ EAFPλ°©μμ μ½λ©μ€νμΌμ κΆμ₯νλ€κ³ ν©λλ€.
EAFPλ “It’s Easier to Ask Forgiveness than Permission”
“νλ½μ ꡬνλ κ² λ³΄λ€ μ©μλ₯Ό ꡬνλ κ²μ΄ μ½λ€.
μλ¬μ μμ μΌλ¨ μν μν€κ³ (try), μλ¬κ° λ°μνλ©΄ κ·Έλ μ²λ¦¬νλ€(except) λΌλ λ»μ΄λΌκ³ ν©λλ€.
*μμΈμ²λ¦¬ 기본ꡬ쑰
try : μλ¬ λ°μ κ°λ₯μ±μ΄ μλ μ½λ μ€ν
except : μλ¬λͺ 1
except : μλ¬λͺ 2
else : (for. if . try) μλ¬κ° λ°μνμ§ μμμλ μ€ν
finally : μλ¬μ λ°μ μ¬λΆμ κ΄κ³μμ΄ νμ μ€νλλ ꡬ문
*μμ 1 κΈ°λ³Έ ꡬ쑰
#μμ 1
name = ['nakamura', 'lee','park','tom']
try :
x = name.index('lee')
except ValueError:
print('μ°Ύμ μ μμ΅λλ€. ValueError λ°μ')
else :
print('OK μλ¬λ°μ μν¨!')
μΆλ ₯>>>>>>>>>>>>>>...OK μλ¬λ°μ μν¨!
nameμ΄λΌλ 리μ€νΈμ leeλΌλ μμκ° μ‘΄μ¬νλ―λ‘, μλ¬κ° λ°μνμ§ μμμ΅λλ€. λ°λΌμ elseλ¬Έμ΄ μ€νλ©λλ€.
λ§μ½ name.index('ABC')λΌκ³ μ λ ₯νλ€λ©΄, 'ABC'λΌλ κ°μ μ°Ύμ μ μμΌλ―λ‘ ValueErrorκ° λ°μνκ³ λ°λΌμ exceptλ¬Έμ΄ μ€νλ©λλ€.
*μμ 2 Exception
try :
x = 1
y = ['a','b']
print(x+y)
except Exception : #μ΄λ€ μλ¬κ° λ°μν μ§ λͺ¨λ₯Όλλ 곡백λλ Exception μΌλ‘ λλλ©΄ λͺ¨λ μλ¬λ₯Ό μΊμΉνλ€.
print('μλ¬ λ°μ!')
else :
print('OK μλ¬λ°μ μν¨!')
intμ 리μ€νΈμ μ°μ°μ λΆκ°λ₯νλ©°, μ΄λ° κ²½μ°μλ Typeμλ¬κ° λ°μν©λλ€. νμ§λ§ except λ€μ TypeErrorλμ μ
곡백 λλ ExceptionμΌλ‘ λλμ΄λ μμΈμ²λ¦¬κ° λ©λλ€. (λͺ¨λ μλ¬ λ°μμ exceptλ¬Έ μ€νλ¨)
*μμ 3 Finally
try :
x = 1
y = ['a','b']
print(x+y)
except Exception :
print('μλ¬ λ°μ!')
else :
print('OK μλ¬λ°μ μν¨!')
finally : #무쑰건 μ€ν μλ¬λ μλλ
print('μλ¬κ° λλ μλλ μ΄ κΈμ μΆλ ₯λ¨')
*μμ 4 alias (as) μ λ€μ€ μμΈμ²λ¦¬
try :
x = 1
y = ['a','b']
print(y.index('AEF'))
except ValueError as l: #μμκ° μ€μνλ€. λ§μ§λ§μ ExceptionμΌλ‘ λλκ² μ’λ€.
#asλ₯Ό μ΄μ©νμ¬ μλ¬ λ΄μ©λ μΆλ ₯κ°λ₯νλ€.
print('벨λ₯ μλ¬ λ°μ')
print('μλ¬λ΄μ© :',l)
except IndexError :
print('μΈλ±μ€ μλ¬ λ°μ')
except Exception:
print('μ μ μλ μλ¬ λ°μ')
else :
print('OK μλ¬λ°μ μν¨!')
import ν λμ λ§μ°¬κ°μ§λ‘ aliasλ₯Ό μ¬μ© κ°λ₯ν©λλ€. κ·Έλ¦¬κ³ λ€μ€ μμΈμ²λ¦¬μμλ μμμ λΆν° μμλλ‘ μ²λ¦¬λλ―λ‘
λ°λμ λ°μνλ₯ λμ μλ¬λ₯Ό μμ λ°°μΉνλκ²μ΄ μ€μν©λλ€. μ²μλΆν° λͺ¨λ μλ¬λ₯Ό μ²λ¦¬νλ Exceptionλ₯Ό λ°°μΉνλ€λ©΄
μλ ꡬ문μ μμΌλ λ§λν μ‘΄μ¬κ° λ©λλ€.
*μμ 5 raise μλ¬ λ°μμν€κΈ°
try :
a = 'Apple'
if a == 'Apple?W' :
print('μ€μΌμ΄')
else :
raise ValueError #ValueErrorλ₯Ό μ§μ λ°μμν΄
except ValueError :
print('λ¬Έμ λ°μ')