[C#] ์˜ˆ์™ธ

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

ํ ... C#์˜ ์˜ˆ์™ธ๋„ C++์ด๋‚˜ Java์™€๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.

try {} ๋ธ”๋Ÿญ์€ ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์ง€๋Š” ๋ถ€๋ถ„์ด๊ณ 

catch() {} ๋ธ”๋Ÿญ์€ ์˜ˆ์™ธ๋ฅผ ๋ฐ›๋Š” ๋ถ€๋ถ„์ด๋ฉฐ

throw๋Š” ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ณ 

finally{} ๋ธ”๋ก์€ ์ˆ˜ํ–‰์„ ๋ณด์žฅํ•œ๋‹ค.


๊ทธ๋ฆฌ๊ณ  catch์—์„œ ์†Œ๊ด„ํ˜ธ๋ฅผ ๋นผ๋ฒ„๋ฆฌ๋ฉด ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๋ฐ›๋Š” ๋ธ”๋Ÿญ์ด ๋œ๋‹ค. c++์˜ catch(...)์™€ ๋™๋“ฑ.

๋ฐ›์€๊ฑธ ๋‹ค์‹œ ๋˜์ง€๋Š” ๊ฒƒ๋„ ๋œ๋‹ค. ๋ฐ›์€ ์ธ์ž๋ฅผ ๊ทธ๋Œ€๋กœ ๋„˜๊ธฐ๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ ๊ทธ๋ƒฅ ๋ฌต์‹œ์ ์œผ๋กœ throw;๋งŒ ์“ฐ๋Š”๊ฒŒ ๋กœ๊ทธ๊ฐ€ ๋” ๋ณด๊ธฐ์ข‹๊ฒŒ ๋œฌ๋‹ค๊ณ  ํ•œ๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•˜๋‹ˆ๊นŒ ๋ญ



๊ทธ๋ฆฌ๊ณ  using ์ถ•์•ฝ ๊ตฌ๋ฌธ์ด ์žˆ๋Š”๋ฐ,
์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค ์น˜์ž. ๊ทธ๋ƒฅ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ๋‹ค. ๊ทผ๋ฐ return์ด๋‚˜ throw๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ํŒŒ์ผ์€ ํ•ด์ œ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— finally๋กœ ํ•ด์ œ๋ฅผ ๋ณด์žฅํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฑด ์ด๋ ‡๊ฒŒ ์ถ•์•ฝ๋  ์ˆ˜ ์žˆ๋‹ค.

finally์—์„œ ํ™•์ธ์šฉ์œผ๋กœ ์ฝ˜์†” ์ฐ๋˜ ๊ฒƒ์„ ๋ชปํ•˜๊ฒŒ ๋œ ๊ฑธ ๋นผ๋ฉด ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค.

close๊ฐ€ ์•„๋‹ˆ๋ผ dispose๋ฅผ ๋ถ€๋ฅธ๋‹ค๋Š” ๊ฒŒ ์ข€ ๋‹ค๋ฅด๊ธด ํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ๊ฐ™๋‹ค.
์ด dispose๋ž€๊ฒŒ ํ•ด์ œ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” IDisposable ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„๋˜๋Š” ํ•จ์ˆ˜๋ผ์„œ ์ด๊ฒŒ ๊ตฌํ˜„๋œ ํƒ€์ž…์—๋Š” ๋‹ค ์ € ์ถ•์•ฝ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


ํ 

๊ทธ๋ฆฌ๊ณ  C# 6.0๋ถ€ํ„ฐ๋Š” catch ๊ตฌ๋ฌธ์— when์œผ๋กœ ์ถ”๊ฐ€์กฐ๊ฑด์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

catch ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋”ํ•ด ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ผ๋•Œ๋งŒ ํ•ด๋‹น ๋ธ”๋Ÿญ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

catch(...) when(์กฐ๊ฑด๋ฌธ) {...}
**
**