[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(์กฐ๊ฑด๋ฌธ) {...}
**
**