try..catch ๋ค์ ๋์ง๊ธฐ
try..catch ๋ค์ ๋์ง๊ธฐ๋ฅผ ํตํด ์๋ฌ ์ก๊ธฐ
Sep 30, 2023
try catch์ ํน์ง
try..catch๋ ์คํฌ๋ฆฝํธ๊ฐ ์ฃฝ๋ ๊ฑธ ๋ฐฉ์งํ๊ณ , ์๋ฌ๋ฅผ ์ก์์ ๋ ํฉ๋นํ ๋ฌด์ธ๊ฐ๋ฅผ ํ ์ ์๊ฒ ํด์ค๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฌด์์๋ fetch๋ฅผ ์ฌ์ฉํ ๋ ๋ง์ด ์ฌ์ฉํ๋๋ฐ ๋ฌธ์๋ฅผ ์ดํด๋ณด๋ ์๋์ ๊ฐ์ ํน์ง์ด ์๋ค๊ณ ํฉ๋๋ค.
try..catch๋ ์ค์ง ๋ฐํ์ ์๋ฌ์๋ง ์๋ํฉ๋๋ค.
try..catch๋ ์คํ ๊ฐ๋ฅํ ์ฝ๋์๋ง ๋์ํฉ๋๋ค. ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ ์ ํจํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์๋ฏธํฉ๋๋ค. ์ค๊ดํธ ์ง์ด ์ ๋ง๋ ๊ฒ์ฒ๋ผ ์ฝ๋๊ฐ ๋ฌธ๋ฒ์ ์ผ๋ก ์๋ชป๋ ๊ฒฝ์ฐ์ try..catch๊ฐ ์๋ํ์ง ์์ต๋๋ค.
try {
{{{{{{{{{{{{
} catch(e) {
alert("์ ํจํ์ง ์์ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ด ์ฝ๋๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.");
}
try catch๋ ๋๊ธฐ์ ์ผ๋ก ์๋ํฉ๋๋ค.
try..catch๋ ๋๊ธฐ์ ์ผ๋ก ์๋ํฉ๋๋ค. setTimeout์ฒ๋ผ ์ค์ผ์ฅด ๋(scheduled) ์ฝ๋์์ ๋ฐ์ํ ์์ธ๋ try..catch์์ ์ก์๋ผ ์ ์์ต๋๋ค
try catch ์ฌ์ฉํ๊ธฐ
JSON.parse๋ฅผ ํตํด ์ค๋ฌด์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ํจํด์ ์ดํด๋ด ๋๋ค.
์๋ ์์ ์ ๊ฐ์ด ์๋ชป๋ json์ด ๋ค์ด์จ ๊ฒฝ์ฐ, JSON.parse๋ ์๋ฌ๋ฅผ ๋ง๋ค๊ธฐ ๋๋ฌธ์ด ์คํฌ๋ฆฝํธ๊ฐ ์ฃฝ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ catch ๋ธ๋ก์ ํตํด ์๋ฌ์ ๊ดํ ๋ฉ์์ง๋ค์ด ์ถ๋ ฅ๋ฉ๋๋ค.
์๋ฌ ๋ค์ ๋์ง๊ธฐ
try..catch์์ ์ค์ํ ํจํด์ด ํ๋์๋๋ฐ ๋ฐ๋ก ์๋ฌ ๋ค์ ๋์ง๊ธฐ ํจํด์ ๋๋ค.
JSON.parse์์ ๋ฐ์ํ ์๋ฌ๋ฅผ try..catch๋ฅผ ์ฌ์ฉํด์ ์ก์ ์ ์์์ง๋ง ๋ง์ฝ JSON.parse๊ฐ ์๋ ์๋ฌ๊ฐ ๋ฐ์ํ์๋๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋๊ฒ์ด ์ข์๊น์?
๋จผ์ ์์ ์์๋ฅผ ๋ฐํ์ผ๋ก ๋ค๋ฅธ ์๋ฌ๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
์์ ๋ฅผ ํ์ธํด๋ณด๋ฉด catch๋ ์์์น ๋ชปํ ์๋ฌ๋ฅผ ์ก์๋ด ์ฃผ๊ธด ํ์ง๋ง, JSON.parse์ ๋ํ ์๋ฌ๊ฐ ์๋ blah()๋ผ๋ ์ ์๋์ง ์์ ํจ์๋ฅผ ํธ์ถํ ๊ฒ์ ๋ํ ์๋ฌ๋ฅผ ๋ฑ๊ณ ์์ต๋๋ค. (ReferenceError, blah is not defind)
์ด๋ ๊ฒ ์๋ฌ ์ข ๋ฅ์ ๊ด๊ณ์์ด ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ฒ๊น ์ ์ด๋ ต๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์ข์ง ์์ต๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํผํ๊ณ ์ โ๋ค์ ๋์ง๊ธฐ(rethrowing)โ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค.
catch๋ ์๊ณ ์๋ ์๋ฌ๋ง ์ฒ๋ฆฌํ๊ณ ๋๋จธ์ง๋ โ๋ค์ ๋์ ธ์ผโ ํฉ๋๋ค.
๋ค์ ๋์ง๊ธฐ๋
- catch๊ฐ ๋ชจ๋ ์๋ฌ๋ฅผ ๋ฐ์ต๋๋ค.
- catch(err) ๋ธ๋ก ์์์ ์๋ฌ ๊ฐ์ฒด err๋ฅผ ๋ถ์ํฉ๋๋ค.
- ์๋ฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์์ง ๋ชปํ๋ฉด throw err๋ฅผ ํฉ๋๋ค.
๋ณดํต ์๋ฌ ํ์ ์ instanceof ๋ช ๋ น์ด๋ก ์ฒดํฌํฉ๋๋ค.
์ด๋ ๊ฒ ์ ์ ์๋ ์๋ฌ๋ง ์ฒ๋ฆฌํ๊ณ ๋ค์ ๋์ ธ์ ์ ์ ์๋ ์๋ฌ๋ โ๊ฑด๋๋ธ ์โ ์์ต๋๋ค. ํ์ง๋ง ์ ์์ ๋ ์๋ฌ ํ์ ๋ง ์ ์ ์์๋ฟ ๊ทธ๋ ๊ฒ ์ฝ๋๊ฐ ๋ง์ด ๋ฌ๋ผ์ง ๊ฒ ๊ฐ์ง ์์ต๋๋ค.
์ด๋ ๊ฒ ๊ฑด๋๋ด ์๋ฌ๋ ๋ค์ ํ๋ฒ try..catch๋ก ์ก์์ผ ํฉ๋๋ค. ๋ด๊ฐ ์ด๋ค ํ๋์ ์ทจํ๊ณ ์ด๋ค ํ๋์์ ์๋ฌ๋ฅผ ์ก์ ๊ฒ์ธ์ง ๋ช ํํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํด์ค์ผํฉ๋๋ค.(ํจ์๋ก ๋ฌถ๊ธฐ)
์ด๋ ๊ฒ ๋ด๊ฐ catch ๋ธ๋ก์์ ์์ํ๊ฑฐ๋ ์ด๋ป๊ฒ ๋ค๋ฃฐ์ง ์๊ณ ์๋ ์๋ฌ๋ฅผ ๋ค๋ฃจ๊ณ , ์์์น ๋ชปํ ์๋ฌ๋ ๋ค์ ๋์ง๊ธฐ๋ฅผ ํตํด ์ฒ๋ฆฌํฉ๋๋ค.
๋ง์น๋ฉฐ
try..catch์ ์๋ฌ ๋ค์ ๋์ง๊ธฐ ํจํด์ ํตํด ์๋ฌ๋ฅผ ์ก๊ณ , ์์์น ๋ชปํ ์๋ฌ๋ ๋ค์ ๋์ง๊ธฐ๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์๋ฌ๋ฅผ ์ก๊ณ , ์์์น ๋ชปํ ์๋ฌ๋ ๋ค์ ๋์ง๊ธฐ๋ฅผ ํตํด ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๊ผผ๊ผผํ๊ณ ์ฌ์ธํ๊ฒ ์๋ฌ ์ฒ๋ฆฌ์ ๋ํ ๋์์ ์ ์ ์๋ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋์ฒ๋ฅผ ํ ์ ์๊ฒ ๋์์ฃผ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ ์ธ์๋ ์๋ฌ ์ฒ๋ฆฌ์๋ ์ ๊ฒฝ์ฐ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.