try..catch ๋‹ค์‹œ ๋˜์ง€๊ธฐ

try..catch ๋‹ค์‹œ ๋˜์ง€๊ธฐ๋ฅผ ํ†ตํ•ด ์—๋Ÿฌ ์žก๊ธฐ

Sep 30, 2023

๊น€ํ˜„๊ธฐ

#JS

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๋Š” ์•Œ๊ณ  ์žˆ๋Š” ์—๋Ÿฌ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” โ€˜๋‹ค์‹œ ๋˜์ ธ์•ผโ€™ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋˜์ง€๊ธฐ๋Š”

  1. catch๊ฐ€ ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  2. catch(err) ๋ธ”๋ก ์•ˆ์—์„œ ์—๋Ÿฌ ๊ฐ์ฒด err๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
  3. ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์•Œ์ง€ ๋ชปํ•˜๋ฉด throw err๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณดํ†ต ์—๋Ÿฌ ํƒ€์ž…์„ instanceof ๋ช…๋ น์–ด๋กœ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

์ด๋ ‡๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์‹œ ๋˜์ ธ์„œ ์•Œ ์ˆ˜ ์—†๋Š” ์—๋Ÿฌ๋Š” โ€˜๊ฑด๋„ˆ๋›ธ ์ˆ˜โ€™ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ„ ์˜ˆ์ œ๋Š” ์—๋Ÿฌ ํƒ€์ž…๋งŒ ์•Œ ์ˆ˜ ์žˆ์„๋ฟ ๊ทธ๋ ‡๊ฒŒ ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๋‹ฌ๋ผ์ง„ ๊ฒƒ ๊ฐ™์ง„ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฑด๋„ˆ๋›ด ์—๋Ÿฌ๋Š” ๋‹ค์‹œ ํ•œ๋ฒˆ try..catch๋กœ ์žก์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ด๋–ค ํ–‰๋™์„ ์ทจํ•˜๊ณ  ์–ด๋–ค ํ–‰๋™์—์„œ ์—๋Ÿฌ๋ฅผ ์žก์„ ๊ฒƒ์ธ์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.(ํ•จ์ˆ˜๋กœ ๋ฌถ๊ธฐ)

์˜ˆ์ œ

์ด๋ ‡๊ฒŒ ๋‚ด๊ฐ€ catch ๋ธ”๋ก์—์„œ ์˜ˆ์ƒํ–ˆ๊ฑฐ๋‚˜ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃฐ์ง€ ์•Œ๊ณ  ์žˆ๋Š” ์—๋Ÿฌ๋ฅผ ๋‹ค๋ฃจ๊ณ , ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋Š” ๋‹ค์‹œ ๋˜์ง€๊ธฐ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์น˜๋ฉฐ

try..catch์˜ ์—๋Ÿฌ ๋‹ค์‹œ ๋˜์ง€๊ธฐ ํŒจํ„ด์„ ํ†ตํ•ด ์—๋Ÿฌ๋ฅผ ์žก๊ณ , ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋Š” ๋‹ค์‹œ ๋˜์ง€๊ธฐ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์—๋Ÿฌ๋ฅผ ์žก๊ณ , ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋Š” ๋‹ค์‹œ ๋˜์ง€๊ธฐ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ผผ๊ผผํ•˜๊ณ  ์„ฌ์„ธํ•˜๊ฒŒ ์—๋Ÿฌ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋Œ€์‘์€ ์•Œ ์ˆ˜ ์—†๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๋Œ€์ฒ˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์—๋Ÿฌ ์ฒ˜๋ฆฌ์—๋„ ์‹ ๊ฒฝ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋ฌธ์„œ

Grow & Glow ยฉ 2025

Banner images by undraw.co