ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ”Ž ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ํ•„์š”์„ฑ

ํ”„๋กœ๊ทธ๋žจ์˜ ์™ธ๋ถ€ ์š”์ธ ๋˜๋Š” ๊ตฌํ˜„ ์ƒ์˜ ๋ฌธ์ œ๋กœ ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์˜ ํŠน์ • ํŒŒํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Ÿฐ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ์ž˜ ํ•˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๊ฒŒ ๋˜์ง€๋งŒ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” 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
๋Œ“๊ธ€