[Scala] ์˜ˆ์™ธ์ฒ˜๋ฆฌ

[์›๋ณธ ๋งํฌ]

์Šค์นผ๋ผ๋„ ์ž๋ฐ”์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ์„ ์ œ๊ณตํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์˜ˆ์™ธ์˜ catch๋ฅผ ๊ฐ•์ œํ•˜๋˜ checked ์˜ˆ์™ธ๋Š” ์—†๊ณ , unchecked ์˜ˆ์™ธ๋งŒ ์กด์žฌํ•œ๋‹ค.

try-catch๋ฌธ
๊ฐ€์žฅ ๋Œ€์ค‘์ ์ด๊ณ  ์ผ๋ฐ˜์ ์ธ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฐฉ์‹์ด๋‹ค.
๊ตฌ๋ฌธ ํ˜•์‹์€ ๋Œ€์ถฉ ์ด๋ ‡๋‹ค.
try
{ **
**ย ย ย  /์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ.../ **
}
catch
{
**ย ย ย  case ๋ณ€์ˆ˜๋ช…:์˜ˆ์™ธํƒ€์ž…1 => ๊ตฌ๋ฌธ1

**ย ย ย  ...**
**ย ย ย  case ๋ณ€์ˆ˜๋ช…:์˜ˆ์™ธํƒ€์ž…N => ๊ตฌ๋ฌธN**
}
finally //์ด ๊ตฌ๋ฌธ์€ ์ƒ๋žต๊ฐ€๋Šฅํ•จ
{
**ย ย ย  /์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ข…๋ฃŒ์‹œ ์ˆ˜ํ–‰ํ•  ๊ตฌ๋ฌธ/**
}

์˜ˆ์™ธ ๋˜์ง€๋Š”๊ฑด throw๋‹ค.
์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋‹ค. image

image

2๊ฐœ ์ด์ƒ๋„ ์ด๋ ‡๊ฒŒ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅํ•˜๋‹ค. image

image

try-match๋ฌธ
์ด๊ฑด ๋ฌธ๋ฒ•์š”์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ์–ด๋–ป๊ฒŒ ํƒ€์ž…์œผ๋กœ ์ž˜ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ธ๋“ฏํ•˜๋‹ค.
๊ทธ๋ž˜์„œ scala.util ํŒจํ‚ค์ง€์˜ Try, Failure, Success๋ผ๋Š” ๋…€์„์„ ๊ฐ–๋‹ค์จ์•ผํ•œ๋‹ค.
๊ฝค ์‹ ๊ธฐํ•˜๋‹ค... match๋ฌธ ์ธ์ž๋ฅผ ์™œ ์•ž์œผ๋กœ ๋ฐ›๋‚˜ ํ–ˆ๋”๋‹ˆ, ์ด๋Ÿฐ๊ฑฐ๋•Œ๋ฌธ์— ํ•ด๋†“์€๊ฒƒ๊ฐ™๋‹ค.

ํ˜•์‹์ด ์ •ํ•ด์ ธ์žˆ๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ๋Œ€์ถฉ ์ด๋ ‡๊ฒŒ ์“ฐ๊ฒŒ๋œ๋‹ค.
Try
{ **
**ย ย ย  /์˜ˆ์™ธ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๊ตฌ๋ฌธ/

}
match
{
**ย ย ย  case Success(_) => /์„ฑ๊ณต ๊ตฌ๋ฌธ/**
**ย ย ย  case Failure(๋ณ€์ˆ˜๋ช…) => /์˜ˆ์™ธ๊ตฌ๋ฌธ/**
}

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋‹ค. image

image

์—ฌ๋Ÿฌ ์˜ˆ์™ธํƒ€์ž…์„ ํ•ธ๋“ค๋งํ•˜๊ณ ์‹ถ๋‹ค๋ฉด ๋งค์นญ๋ฌธ์„ ์ค‘์ฒฉํ•˜๋ฉด ๋œ๋‹ค. image

image


์ฐธ์กฐ
https://knight76.tistory.com/m/entry/scala-trycatchTrymatchEither