๊ฐ์ฒด ์งํฅ์ ์๊ธฐํ๋ฉด ๊ผญ ๋์ค๋ ๋จ์ด์ธ ์์ธ์ ๋ํด์ ์์๋ณธ๋ค.
Exception
- ์ฌ์ค ์์ธ๋ ๊ฐ์ฒด์งํฅ์ ์ผ๋ถ๊ฐ ์๋๋ค.
- ์๊ธฐ์ ์ผ๋ก ๋น์ทํ ๋ ๋์๊ณ , ์์ ์ง์์์ ์์ธ๊ฐ ๊ฐ์ฒด์งํฅ์ ์ ์ผํ ๊ฑฐ๋ผ๋ ์์ผ๋ก ๋งํ์ฌ ํฉ์ณ์ ์๊ฐํ๊ฒ ๋จ
try/catch/finally
catch์ ์์ธ ํด๋์ค(java)
- ํน์ ์์ธ๋ฅผ ์บ์นํ ์ ์์
IOException
: ์ ์ถ๋ ฅ ๊ด๋ จ ํด๋์ค๋ค์ ๋ถ๋ชจ ํด๋์คEOFException
,FileNotFoundException
๋ฑ
ArithmeticException
: ์ฐ์ ๊ณผ ๊ด๋ จ๋ ์์ธ (0๋๋๊ธฐ)IndexOutOfBoundsException
- ํน์ ํ๊ธฐ ์ด๋ ต๋ค๋ฉด
Exception
ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ก๋๋ค. - ์ด๋ ๊ฒ ๋์ํ๊ธฐ ๋๋ฌธ์, ๋ถ๋ชจ ์์ธ ํด๋์ค๊ฐ ์์๋ณด๋ค ๋จผ์ ๋์ค๋ฉด ์๋๋ค.
- catch์์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์์์ ๋ค ๋งํ๋ฒ๋ฆฐ๋ค.
finally ์
- Swift์์๋
defer
๋ฅผ ์์ฐ๋ฉด ๋๊ฒ ๋ค.
C
- ํน์ ๊ฒฝ๋ก์ ํ์ผ์ ์ฐ๋ ๋์์ ํ๋ ํจ์๊ฐ ์๋ค๊ณ ํ์.
- ๊ทธ๋ฐ๋ฐ, ๊ฐ์ ๊ฒฝ๋ก์ ๋๋ฒ์ฐ๋ ค๊ณ ํ๋ฉด ์์ธ๊ฐ ๋ฐ์ํ๋ค.
- ํ์ผ์ ๋ซ์ง ์์๊ธฐ ๋๋ฌธ!
- ๊ทธ๋ผ ํญ์ ๋ซ์์ค์ผ ๊ฒ ๋ค??
- ๊ทผ๋ฐ ์ด๊ฑด ๋ง๋๊ฐ?
- ์์ธ ๋ฐ์์์๋ ํ์ผ์ ์จ์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๋ฅผ ์บ์นํ๋ ์ชฝ์๋ Close๊ฐ ๋ค์ด๊ฐ์ผ ํ๋ค.
- ๋ญ๊ฐ ์ด์ํ๋ค.
- ์ด๋ ๊ฒ ๋๋ฉด ๋๋ฒ ํธ์ถ์
Open
ํจ์๋ ๋์ด๊ฐ ์ ์์ง๋ง,WriteByte()
ํจ์์์ ์๋ฌ๊ฐ ๋๋ฒ๋ฆฌ๋ฉด ๊ณค๋ํด์ง๋ค. - ๋ง์ฝ
IOException
๋ง๊ณ ๋ค๋ฅธ ์์ธ๊ฐ ๋ฐ์ํ๋ฉดClose
๋ ํธ์ถ๋์ง ์๋๋ค. - ์ด๋ ํ ์ํฉ์๋ ํด๋น ํจ์๊ฐ ํธ์ถ๋ ํ์๋ ๋ฌด๊ฒฐํ ์ํ๋ฅผ ๋ณด์ฅํด์ค์ผ ํ๋๋ฐ, ๊ทธ๋ ์ง ์๊ฒ ๋๋ ๊ฒ.
- ์ฆ, ๋ฌด์กฐ๊ฑด ์ด ํจ์ ํธ์ถ ํ์๋ ๋ค์ ํธ์ถ๋ ์ ์๋๋ก ๋ซ์์ฃผ์ด์ผ ํ๋ค.
- ๊ทธ๋์ ๋์จ๊ฒ
finally
์ด๋ค. - ์ด๋ ๊ฒฝ๋ก๋ฅผ ํ์ ์คํ๋๋ ๋ฌด์กฐ๊ฑด ์คํ๋๋ ์ฝ๋๋ผ ์๊ฐํ๋ฉด ๋๋ค.
Java
- ๋น์ฐํ ์๋ฐ์์๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์์ง๊ฐ ์๋ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋ค.
- ์๋ ์ญ์๋
write
์ ์๋ฌ๋๋ฉดclose
์ํ๊ณ ๋๊ฐ๋ค. - ๊ทธ๋ฐ๋ฐ ์ด๋ ์์ ๊ฒฝ์ฐ ๋ซ์ง ์๊ณ ๋๋ฒ ํธ์ถํด๋ ๋ฌธ์ ๊ฐ ์์๊ธด๋ค. ์?
GC๊ฐ ๋์ ๋ซ์์ค๋ค.
- ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์ฐธ์กฐ๋๊ณ ์์ง ์์
FileOutputStream
๊ฐ์ฒด๋ฅผ ํด์ ์ํจ๋ค.- GC๋
finalize()
๋ฅผ ํธ์ถํ๋๋ฐ ์ด ์์์close()
๋ฅผ ํธ์ถํ๋ค.
- GC๋
- ๊ทธ๋ฐ๋ฐ ๊ทธ ์์ ์ด ๋ช ์์ ์ด์ง ์๋ค. ์ฆ ์ธ์ ์ธ์ง ๋ชจ๋ฅธ๋ค.
- GC ์คํ์ ์ ๋ฆฌ์์ค ํ๊ณ์น์ ๋ค๋ค๋ฅผ ์๋ ์๋ค.
- ์ด๋ฌ๋ฉด ๋ ์์ธ ๋ฐ์
- ์ฆ, ๋ช
์์ ์ผ๋ก ํด์ผํ ์ผ์ ํ์ง ์๋ ๊ฒ์ ์ ๋์์ ๋ฒ์ด๋๋ค.
- ๋ง๋ฒ ๊ฐ์ ๊ฒ์ ์์กดํ์ง ๋ง์.
- ๊ทธ๋์ ์ ๋ ์ ๋ ๊ฒ ์ง๋ฉด ์๋๋ค.
- ์ค์ ๋ก๋ Java 9๋ถํฐ
finalize()
๋ฅผ ์ญ์ ํ ์์ ์ด๋ผ ํจ - ๋ง๋ฒ๊ฐ์ ๊ฒ(์ธ์ ๊ฐ GC๊ฐ ๋ด๊ฐ ๋ซ์ง ์์ ๊ฑธ ๋ซ์์ค๊ฑฐ์ผ)์ ์์กดํ์ง ์๋๋ค.
์ฌ๋ฐ๋ฅธ ์
์ ๋ฆฌ - ์์ธ ๋ฐ์์ ์งํ ์์
try
๋ธ๋ก ์คํ์ด ์ค๋จ๋จcatch
๋ธ๋ก ์ค์ ๋ฐ์ํ ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ธ๋ก์ด ์๋์ง ์ฐพ์- ์์์ ๋ถํฐ ์์ฐจ์ ์
- ์ฐพ์ ๊ฒฝ์ฐ
- ํด๋น
catch
๋ธ๋ก ์์ ์ฝ๋๋ค์ ์คํ finally
๋ธ๋ก์ ์คํtry
๋ธ๋ก์ดํ์ ๋ค๋ฅธ ์ฝ๋๋ค์ด ์คํ๋จ
- ํด๋น
- ๋ชป์ฐพ์ ๊ฒฝ์ฐ
finally
๋ฅผ ๋ธ๋ก์ ์คํ- ํ ๋จ๊ณ ๋์
try
๋ธ๋ก์ผ๋ก ์ ๋ฌ
catch ๋ธ๋ก์์ ๋ค์ ์์ธ ๋์ง๊ธฐ (rethrow)
- ์์ธ๋ฅผ ์ก๊ธดํ๋๋ฐ, ์์์์ ์ฒ๋ฆฌํ๊ฒ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- ๋จ, ์ด๋ call stack์ด ์ ์ง๋ ์ํ์ฌ์ผ ํจ
- ๊ทธ๋์ผ ์์ชฝ์ ์ฐพ์ผ๋ฌ ๊ฐ ์ ์์ง
- ์๋ก ๋์ง๋ค๊ฐ ํธ์ถ ํธ๋ฆฌ๋ฅผ ์์ด๋ฒ๋ฆด ๊ฐ๋ฅ์ฑ๋ ์์
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๊ฑฐ ์ข์ ์ต๊ด์ ์๋
- ํญํ? ๋๋ฆฌ๊ธฐ
Custom Exception
- class๋ฅผ ๋ง๋ค์ด์ผ ํจ
- ์์ ๋ฐ์์ผ ํจ
super
ํธ์ถํ ๊ฒ์ผ๋ก ๋ณด์RuntimeException
์๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ ๋ฐ๋ ํจ์๊ฐ ์์ ๊ฒ์ด๋ ๊ฒ์ ์ ์ ์์
- ๋ณดํต์
RuntimeException
์ ์์ํ์ฌ ์ฌ์ฉํ๋ค๊ณ ํจ - ํ์ง๋ง C#๊ณผ ๊ฐ์ด ๊ทธ๋ฅ
Exception
์ ์์ํ์ฌ ์ฌ์ฉํ ์๋ ์๋ค๊ณ ํจ- ๋ ์ ์ด๊ฒ ๋์๋ณด์ด์ง
- ๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง๋ค๊ณ ํ๋ค.
์๋ฐ์ ์์ธ ๋ถ๋ฅ
- ๋ค๋ฅธ ์ธ์ด์ ์์ธ์ ๋ค๋ฅธ์ ์ด ์๋๋ฐ, ์์ธ ๋ถ๋ฅ๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ
- ์ญ์ฌ์ ์ธ ์ด์ , ์ ์ ์ ์ธ ์ด์
- ๋ฐฐ๊ฒฝ์ ์์๋ณด์.
์ค๋ฅ๋ฅผ ๋ฐฉ์นํ๋ฉด ์ผ์ด๋๋ ์ผ (Java)
- JVM ํ๊ฒฝ์์ ๋๋ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ํ ์์ธ๋ฅผ,
- ์ ํ ์ฒ๋ฆฌ(catch)ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์ง ์์๋ณด์.
main()
๋ฉ์๋๊น์ง ์ฒ๋ฆฌ๋ฅผ ์ํด์ค ๊ฒฝ์ฐ JVM์ด ์ค๋ฅ๋ฅผ ๋์ฐ๊ณ ์ข ๋ฃ์ํด- ๊ฒฐ๊ตญ์ JVM๊น์ง ๊ฐ์ ์ข
๋ฃ์ํค๊ธฐ์ OS๋ ๊ธฐ๊ณ์๋ ์๋ฌด ์ํฅ์ด ์๋ค.
- JVM์ OS์์ ๊ทธ๋ฅ ์ค์นํ๋ ํ๋ก๊ทธ๋จ
์ค๋ฅ๋ฅผ ๋ฐฉ์นํ๋ฉด ์ผ์ด๋๋ ์ผ (C)
- ๊ทธ๋ผ ๊ฐ์ ๋จธ์ ๋ ์๊ณ ์์ธ๋ ์๋ ์๋ ์ธ์ด๋ ์ด๋ป๊ฒ ๋ ๊น?
- ์ธ์ ์ OS/๊ธฐ๊ณ๋ฅผ ์ฐ๋์ ๋ฐ๋ผ ์ข ๋ค๋ฅด๋ค.
์์ฃผ ์๋ ํ๋์จ์ด/OS
- ํ๋ฒ์ ํ๋ก๊ทธ๋จ ํ๋๋ง ์คํ๊ฐ๋ฅ
- ๋ฐ๋ผ์ ํ๋์จ์ด์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ๊ณต์ ํ๋ค!
- CPU์์ 0์ผ๋ก ๋๋๋ ค ํจ
- CPU์ ALU(Arithmetic and Logical Unit)๋ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์์
- ํ๋์จ์ด๊ฐ ๋ฉ์ถค (์ง์ง ํฌ๋์..)
- ๊ธฐ๊ณ ์ฌ๋ถํ ํด์ผ ํจ
์์ฆ์ ํ๋์จ์ด
- ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์์ ์คํ๋จ
- ๋ฐ๋ผ์ ๊ฐ ํ๋ก๊ทธ๋จ๋ง๋ค ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(๊ฐ์ ๋ฉ๋ชจ๋ฆฌ)๋ฅผ ์ ๊ณต
- ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ 8๊ธฐ๊ฐ์ธ๋ฐ, ๊ฐ๊ฐ์ ํ๋ก๊ทธ๋จ ์ญ์ 8๊ธฐ๊ฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ํ ๋นํด๋ฒ๋ฆผ(๊ฐ์)
- ๊ทธ ๊ดด๋ฆฌ๋ฅผ ์ด์์ฒด์ ์์ ๋์คํฌ์ ๋๋ค๋๊ฐ ํ๋ ๋ก์ง์ ํตํด ํด๊ฒฐํจ
- CPU์์ 0์ผ๋ก ๋๋๋ ค ํจ
- CPU์ ALU(Arithmetic and Logical Unit)๋ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์์
- CPU์์ ๋ฌธ์ ๊ฐ ์๋ค๋ ์ธํฐ๋ฝํธ๋ฅผ ๋ณด๋ด์ค
- ์ด๊ฑธ ํ๋ก๊ทธ๋จ์์ ์ ๋๋ก ์ฒ๋ฆฌ์ํด์ฃผ๋ฉด ํฌ๋์๋ ์ ์์
- OS๊ฐ ํด๋น ์ํฉ์ ํ์
ํ๋ค ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํ๊ณ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํด์ ํจ
- ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ์ํฅ์ ์ฃผ์ง ์์