์๋ฌ ์ฒ๋ฆฌ๋ ํ๋ก๊ทธ๋๋ฐ์์ ๋นผ๋์ ์ ์๋ค. ์๋ฌ ๊ด๋ฆฌ๋ฅผ ์ ๋๋ก ํด๋์ด์ผ ์ถํ ๋๋ฒ๊น
์ ์์ด ์ด๋์ ๋ณผ ์ ์๋ค. ๋ฏธ๋์ ๋๋ฅผ ์ํ ํฌ์?์ ๊ฐ๋
์ด๋ค. ์๋ฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ๋ ์ค์ํ์ง๋ง ์๋ฌ๋ฅผ ๋ด๋ ๋ฐฉ๋ฒ, ์๋ฌ๋ฅผ ๊ฐ์งํ์ฌ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ ์ญ์ ์ค์ํ๋ค. ์ค๋์ ์ด๋ฌํ ์๋ฌ์ ๋ํด ์์๋ณด๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด์.
ํํ
- ์ํ๊ธฐ์ ๋์ ์ค๋ฅ๋ฅผ ํํํ๋ค.
- ์ค๋ฅ๋ฅผ ๋์ง ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ฉ์๋์ ๊ฒฝ์ฐ
throws
๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฅ ๋ดํฌ ํจ์์์ ๋ํ๋ธ๋ค.
์ค๋ฅ ์ฒ๋ฆฌ
- ์ ๋ ๊ฒ ์์ฑํ ์ฝ๋์ ๋ํด ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ํ ์ฝ๋๋ ์์ฑํด์ผ ํ๋ค.
- ์ค๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ด๋ผ๋์ง, ๋ค๋ฅธ ์๋๋ฅผ ํ๋ค๋์ง, ์ฌ์ฉ์์๊ฒ ์ค๋ฅ๋ฅผ ์๋ฆฌ๊ณ ์ ํ์ ํ๋๋ก ํ๋ค๋์ง๋ฑ์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํจ
throws
๊ฐ ๋ฌ๋ ค์๋ ํจ์๋ try
๋ฅผ ์ฌ์ฉํ์ฌ ํธ์ถํ๋ค.
do-catch
- ๊ฐ์ฅ ์ ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ ์ค๋ฅ ์ผ์ด์ค์ ๋์๋๋ค.
- catch๋ฅผ ๊ณ์ํด์ ์ฐ๋ ๊ฒ์ด ๊ท์ฐฎ๋ค๋ฉด ์ด๋ ๊ฒ๋ ํ ์ ์๋ค.
- ์๋ฌ๋ฅผ ๊ฐ๋ณ๋ก ์ฒ๋ฆฌํ ํ์๊ฐ ์๋ค๋ฉด ์ด์ ๊ฐ์ด ์จ๋ ๋ฌด๋ฐฉํ๋ค.
try?
- ๋ณ๋์ ์ค๋ฅ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํต๋ณด๋ฐ์ง ์๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๊ฐ์ nil๋ก ๋ฐ์ ์ ์๋ค.
- ์ฆ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด nil, ๋ฐ์ํ์ง ์์ผ๋ฉด ์ต์
๋ ํ์
์ผ๋ก ๋ฆฌํด
try!
- ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ผ๋ ํ์ ์ ๊ฐ์ง ๋ ์ฌ์ฉ
- ๋ฐ๋ก ๊ฐ์ ๋ฆฌํด ๋ฐ์ ์ ์์ง๋ง
- ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์
defer
- Clean up Action
- ํน์ code block์ ๋ฒ์ด๋ ๊ฒฝ์ฐ ๋ฐ๋์ ๋ถ๋ฆฌ๊ฒ ํ ์ ์์
- error๊ฐ ๋ฐ์ํ๋ฉด, code ์คํ ์์น๊ฐ jump ํด์ block์ ๋น ์ ธ๋๊ฐ๊ฒ ๋๋๋ฐ, ์ด ๋, ๋ฐ๋์ ์ฒ๋ฆฌํด์ผํ code๋ฅผ ์คํํ๊ฒ ํ ์ ์์
Reference