์ด์ ํฌ์คํ
์์ ์๋ฌ์ ์ข
๋ฅ์ ๋ํด์ ๋ค๋ฃจ์์ต๋๋ค. ํ์ด์ฌ์ EAFP๋ฐฉ์์ ์ฝ๋ฉ์คํ์ผ์ ๊ถ์ฅํ๋ค๊ณ ํฉ๋๋ค.
EAFP๋ โItโs Easier to Ask Forgiveness than Permissionโ
โํ๋ฝ์ ๊ตฌํ๋ ๊ฒ ๋ณด๋ค ์ฉ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ์ฝ๋ค.
์๋ฌ์ ์์ ์ผ๋จ ์ํ ์ํค๊ณ (try), ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ๋ ์ฒ๋ฆฌํ๋ค(except) ๋ผ๋ ๋ป์ด๋ผ๊ณ ํฉ๋๋ค.
*์์ธ์ฒ๋ฆฌ ๊ธฐ๋ณธ๊ตฌ์กฐ
try : ์๋ฌ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฝ๋ ์คํ
except : ์๋ฌ๋ช
1
except : ์๋ฌ๋ช
2
else : (for. if . try) ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์์๋ ์คํ
finally : ์๋ฌ์ ๋ฐ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ํญ์ ์คํ๋๋ ๊ตฌ๋ฌธ
*์์ 1 ๊ธฐ๋ณธ ๊ตฌ์กฐ
name์ด๋ผ๋ ๋ฆฌ์คํธ์ lee๋ผ๋ ์์๊ฐ ์กด์ฌํ๋ฏ๋ก, ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค. ๋ฐ๋ผ์ else๋ฌธ์ด ์คํ๋ฉ๋๋ค.
๋ง์ฝ name.index('ABC')๋ผ๊ณ ์
๋ ฅํ๋ค๋ฉด, 'ABC'๋ผ๋ ๊ฐ์ ์ฐพ์ ์ ์์ผ๋ฏ๋ก ValueError๊ฐ ๋ฐ์ํ๊ณ ๋ฐ๋ผ์ except๋ฌธ์ด ์คํ๋ฉ๋๋ค.
*์์ 2 Exception
int์ ๋ฆฌ์คํธ์ ์ฐ์ฐ์ ๋ถ๊ฐ๋ฅํ๋ฉฐ, ์ด๋ฐ ๊ฒฝ์ฐ์๋ Type์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์ง๋ง except ๋ค์ TypeError๋์ ์
๊ณต๋ฐฑ ๋๋ Exception์ผ๋ก ๋๋์ด๋ ์์ธ์ฒ๋ฆฌ๊ฐ ๋ฉ๋๋ค. (๋ชจ๋ ์๋ฌ ๋ฐ์์ except๋ฌธ ์คํ๋จ)
*์์ 3 Finally
*์์ 4 alias (as) ์ ๋ค์ค ์์ธ์ฒ๋ฆฌ
import ํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก alias๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ค ์์ธ์ฒ๋ฆฌ์์๋ ์์์ ๋ถํฐ ์์๋๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก
๋ฐ๋์ ๋ฐ์ํ๋ฅ ๋์ ์๋ฌ๋ฅผ ์์ ๋ฐฐ์นํ๋๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฒ์๋ถํฐ ๋ชจ๋ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ Exception๋ฅผ ๋ฐฐ์นํ๋ค๋ฉด
์๋ ๊ตฌ๋ฌธ์ ์์ผ๋ ๋ง๋ํ ์กด์ฌ๊ฐ ๋ฉ๋๋ค.
*์์ 5 raise ์๋ฌ ๋ฐ์์ํค๊ธฐ