ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ ์์ธ ์ฒ๋ฆฌ์ ํ์์ฑ
ํ๋ก๊ทธ๋จ์ ์ธ๋ถ ์์ธ ๋๋ ๊ตฌํ ์์ ๋ฌธ์ ๋ก ์์์น ๋ชปํ๊ฒ ํ๋ก๊ทธ๋จ์ ํน์ ํํธ๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์์ ์ ์์ต๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ๋ฐ์ํ ์๋ฌ๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ค์ ์ฝ๋๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
์๋ฌ์ฒ๋ฆฌ๋ฅผ ์ ํ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ ์ ์ฒด๊ฐ ๋์ํ์ง ์๊ฒ ๋์ง๋ง ์๋ฌ์ฒ๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ ์์ ์ผ๋ก ์คํ๋ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ throw ๋ช
๋ น์ผ๋ก ์๋ฌ๋ฅผ ๋ฐ์์ํค๊ณ try, catch ๊ตฌ๋ฌธ์ ์ด์ฉํด ํด๋น ์๋ฌ๋ฅผ ํธ๋ค๋งํฉ๋๋ค.
๐ Try, Catch, Finally ๊ตฌ๋ฌธ
์๋ฌ์ฒ๋ฆฌ ๋ธ๋ญ์ Try, Catch, Finally๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
try{
// ์ ์์ ์ผ๋ก ์คํ๋๋ ๊ฒฝ์ฐ ์คํ๋ ํ๋ก๊ทธ๋จ ์์ฑ
// try ๋ธ๋ก์์์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ catch ๋ธ๋ก์ผ๋ก ์ด๋ํจ
}
catch(e){
// try ๋ธ๋ก์์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ
// ์๋ฌ๋ฅผ ์ธ์ e๋ก ๋ฐ์ ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ์์ฑ
}
finally{
// try ๋๋ catch๊ตฌ๋ฌธ์ด ์คํ๋๊ณ ๋์ ๋ง์ง๋ง์ ์คํ๋ ์ฝ๋
}
try ๊ตฌ๋ฌธ ์์์ ํธ์ถํ ํจ์ ์์์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์๋ catch๋ก ์ด๋ํด ํ๋ก๊ทธ๋จ์ด ์คํ๋ฉ๋๋ค.
try๋ ํญ์ ์กด์ฌํด์ผ ํ์ง๋ง, catch์ finally๋ ๋ ์ค์ ํ๋๋ง ์กด์ฌํด๋ ์ ์์ ์ผ๋ก ์คํ๋ฉ๋๋ค.
- ์๋ฌ ๋ฐ์์ํค๊ธฐ
throw ๋ช ๋ น ์ฌ์ฉ : return ๊ตฌ๋ฌธ๊ณผ ๋น์ทํ๊ฒ ์๋ฌ๋ฅผ ๋ํ๋ผ ์ ์๋ ์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฌธ์์ด, ์ซ์, ๊ฐ์ฒด ๋ฑ javascript object๋ฅผ ์์ ๋กญ๊ฒ ํ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
์ํฉ์ ๋ฐ๋ผ์ ์๋ฌ๊ฐ ์ ๋ฐ์ํ๋์ง๋ ๊ฐ์ด ์ ์ด์ฃผ๋ฉด ์ข์ต๋๋ค. - ์๋ฌ ์ฒ๋ฆฌ ๊ณผ์
throw ๋ฐ์ ์, catch ๊ตฌ๋ฌธ์ ์ฐพ์์ ์ด๋ํ๊ฒ ๋ฉ๋๋ค.
ํ์ฌ์ ๋ธ๋ก์์ catch, finally ๊ตฌ๋ฌธ์ด ์๋ค๋ฉด ์์ ๋ธ๋ก, ์์ ํจ์(ํธ์ถ๋ ํจ์)๋ก ์ด๋ํฉ๋๋ค.
try, finally ๊ตฌ๋ฌธ๋ง ์กด์ฌ์, finally ๊ตฌ๋ฌธ์ ์คํ๋๊ณ , catch ๋ ์ ์๋ ๊ตฌ๋ฌธ์ ์ฐพ์ ์ด๋ํฉ๋๋ค.
catch ๊ตฌ๋ฌธ์ ์ฐพ์ผ๋ฉด ์๋ฌ๊ฐ ์ฒ๋ฆฌ๋๊ณ ํด๋น try, catch ๊ตฌ๋ฌธ ์ดํ ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
์์ 1

์คํ ๊ฒฐ๊ณผ

ํ์ด
try์์ ์ฒซ๋ฒ์งธ ์ฝ์.๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๊ณ ์ค๊ฐ์ errFunc์ ํธ์ถํ๊ฒ ๋์ด throw๋ฅผ ๋ง๋ฉ๋๋ค.
throw๋ ๊ฐ์ฅ ๊ฐ๊น์ด catch ๋ธ๋ญ์ ์ฐพ๋๋ฐ ํด๋น ํจ์์๋ catch ๊ตฌ๋ฌธ์ด ์์ผ๋ฏ๋ก ๋ฐ์ ์๋ catch๊ตฌ๋ฌธ์ ์คํํฉ๋๋ค.
์ดํ finally ๊ตฌ๋ฌธ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
์์ 2

์คํ ๊ฒฐ๊ณผ

ํ์ด
try์์ ์ฒซ๋ฒ์งธ ์ฝ์.๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๊ณ ์ค๊ฐ์ Func์ ํธ์ถํฉ๋๋ค.
Func์ try์์ ์ฒซ๋ฒ์งธ ์ฝ์.๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๊ณ errFunc์ ํธ์ถํ์ฌ throw๋ฅผ ๋ง๋ฉ๋๋ค.
๊ฐ์ฅ ๊ฐ๊น์ด catch ๋ธ๋ญ์ func์์ ์์ผ๋ฏ๋ก catch ๊ตฌ๋ฌธ ์์ ์๋ ์ฝ์.๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ดํ func์ finally ์ฝ๋๋ฅผ ์คํํ๊ณ ์๋ฌ๊ฐ ํธ๋ค๋ง ๋์์ผ๋ฏ๋ก ๋ ์ด์ catch ๋ธ๋ก์ ์ฐพ์ง ์์ต๋๋ค.
func๋ค์์ ์ฝ์.๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๊ณ finally ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
cf. ๋ง์ฝ func์ catch๊ตฌ๋ฌธ์ด ์๋ค๋ฉด func์ finally๊ฐ ์คํ๋ ํ ๋ฐ์ catch๊ตฌ๋ฌธ์ผ๋ก ๋์ด๊ฐ๋๋ค.
์ถ์ฒ : https://school.programmers.co.kr/learn/courses/10/lessons/431
'JS > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Javascript ๊ธฐ์ ๋ฉด์ ์์ ์ง๋ฌธ ๐ (0) | 2023.12.07 |
---|---|
AJAX / JSON (0) | 2022.09.22 |
Callback Function / EventHandler (0) | 2022.09.22 |