์ด์ ํฌ์คํ
์์ ์๋ฌ์ ์ข
๋ฅ์ ๋ํด์ ๋ค๋ฃจ์์ต๋๋ค. ํ์ด์ฌ์ 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('๋ฌธ์ ๋ฐ์')