1. ์คํ ํธ๋ ์ด์ค ์ป๊ธฐ
Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ๋ก๊ทธ๋จ์์ ์ผ์ด๋๋ ์ผ์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋จ์ง ๋จ์ด๊ฐ ์๋๋๋ค.
์๋ฅผ ๋ค์ด, C++ ํ๋ก๊ทธ๋จ์ด ์ปดํ์ผ๋ ํ์๋ ๊ธฐ๊ณ ์ฝ๋๋ก ๊ฐ๋ ์ฐฌ ํ๋์ ํฐ ํ์ผ์ด ๋๊ณ ๋ฐํ์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ํ์ฌ ์คํ ์ค์ธ ๊ธฐ๊ณ ์ฝ๋๊ฐ ํฌํจ๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ฃผ์๋ฟ์ ๋๋ค. ๋ง์ด๋ ์๋๋๋ค.
๊ทธ๋ฌ๋ Java์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ด ์ปดํ์ผ๋ ํ์๋ ํด๋์ค๋ ํด๋์ค๋ก ๋จ์ ์๊ณ ๋ฉ์๋์ ๋ณ์๋ ์ฌ๋ผ์ง์ง ์์ผ๋ฉฐ ํ๋ก๊ทธ๋๋จธ๋ ํ๋ก๊ทธ๋จ์์ ์ผ์ด๋๋ ์ผ์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์คํ ์ถ์
์๋ฅผ ๋ค์ด ํ๋ก๊ทธ๋จ ์คํ ์์ ์์ ํ์ฌ ์คํ ์ค์ธ ๋ฉ์๋์ ํด๋์ค์ ์ด๋ฆ์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋์ ๋ฉ์๋๋ง์ด ์๋๋ผ ํ์ฌ ๋ฉ์๋์์ ๋ค์ ๋ฉ์๋๋ก ๋ฉ์๋ ํธ์ถ์ ์ ์ฒด ์ฒด์ธ์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค main()
.
ํ์ฌ ๋ฉ์๋, ์ด๋ฅผ ํธ์ถํ ๋ฉ์๋, ํด๋น ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฉ์๋ ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋ ๋ชฉ๋ก์ ์คํ ์ถ์ ์ด๋ผ๊ณ ํฉ๋๋ค . ๋ค์ ๋ฌธ์ฅ์ผ๋ก ์ป์ ์ ์์ต๋๋ค.
StackTraceElement[] methods = Thread.currentThread().getStackTrace();
๋ ์ค๋ก ์์ฑํ ์๋ ์์ต๋๋ค.
Thread current = Thread.currentThread();
StackTraceElement[] methods = current.getStackTrace();
currentThread()
ํด๋์ค์ ์ ์ ๋ฉ์๋ ๋ ํ์ฌ ์ค๋ ๋, ์ฆ ํ์ฌ ์คํ ์ค๋ ๋์ ๋ํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๊ฐ์ฒด Thread
์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ฐํํฉ๋๋ค . Java CoreThread
ํ์คํธ ์ ๋ ๋ฒจ 17 ๋ฐ 18์์ ์ค๋ ๋์ ๋ํด ์์ธํ ์์๋ณผ ๊ฒ์
๋๋ค .
์ด ๊ฐ์ฒด ์๋ ๋ฉ์๋์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ ๊ฐ์ฒด ๋ฐฐ์ด์ ๋ฐํํ๋ ๋ฉ์๋๊ฐ Thread
์์ต๋๋ค . ์ข
ํฉํ๋ฉด ์ด๋ฌํ ๋ชจ๋ ์์๊ฐ ์คํ ์ถ์ ์ ํ์ฑํฉ๋๋ค .getStackTrace()
StackTraceElement
์:
์ํธ |
---|
|
์ฝ์ ์ถ๋ ฅ |
|
์์ ์ ์ฝ์ ์ถ๋ ฅ์์ โโ๋ณผ ์ ์๋ฏ์ด getStackTrace()
๋ฉ์๋๋ ์ธ ๊ฐ์ง ์์์ ๋ฐฐ์ด์ ๋ฐํํ์ต๋๋ค.
getStackTrace()
Thread
์์ ๋ฐฉ์test()
Main
์์ ๋ฐฉ์main()
Main
์์ ๋ฐฉ์
์ด ์คํ ์ถ์ ์์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๋ก ์ ๋ด๋ฆด ์ ์์ต๋๋ค.
- ์ด ๋ฉ์๋๋ Main.java ํ์ผ์ 11ํ์ ์๋ ๋ฉ์๋
Thread.getStackTrace()
์ ์ํด ํธ์ถ๋์์ต๋๋ค.Main.test()
- ๋ฉ์๋ ๋ Main.java ํ์ผ์ 5ํ์ ์๋ ๋ฉ์๋
Main.test()
์ ์ํด ํธ์ถ๋์์ต๋๋ค.Main.main()
- ์๋ฌด๋ ๋ฉ์๋๋ฅผ ํธ์ถํ์ง ์์์ต๋๋ค
Main.main()
. ์ด๊ฒ์ ํธ์ถ ์ฒด์ธ์ ์ฒซ ๋ฒ์งธ ๋ฉ์๋์ ๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋ณด ์ค ์ผ๋ถ๋ง ํ๋ฉด์ ํ์๋์์ต๋๋ค. StackTraceElement
๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด ์์ ์ง์ ์ป์ ์ ์์ต๋๋ค.
2.StackTraceElement
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ์ด StackTraceElement
ํด๋์ค๋ ์คํ ์ถ์ ์์, ์ฆ stack trace
.
์ด ํด๋์ค์๋ ๋ค์๊ณผ ๊ฐ์ ์ธ์คํด์ค ๋ฉ์๋๊ฐ ์์ต๋๋ค.
๋ฐฉ๋ฒ | ์ค๋ช |
---|---|
|
ํด๋์ค์ ์ด๋ฆ์ ๋ฐํ |
|
๋ฉ์๋์ ์ด๋ฆ์ ๋ฐํ |
|
ํ์ผ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค(ํ๋์ ํ์ผ์ ์ฌ๋ฌ ํด๋์ค๊ฐ ํฌํจ๋ ์ ์์). |
|
๋ฉ์๋๊ฐ ํธ์ถ๋ ํ์ผ์ ์ค ๋ฒํธ๋ฅผ ๋ฐํํฉ๋๋ค. |
|
๋ชจ๋์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค(์ผ ์ ์์ null ). |
|
๋ชจ๋์ ๋ฒ์ ์ ๋ฐํํฉ๋๋ค(์ผ ์ ์์ null ). |
ํ์ฌ ํธ์ถ ์คํ์ ๋ํ ๋ณด๋ค ์์ ํ ์ ๋ณด๋ฅผ ์ป๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ํธ | ์ฝ์ ์ถ๋ ฅ | ๋ฉ๋ชจ |
---|---|---|
|
|
ํด๋์ค ์ด๋ฆ ๋ฉ์๋ ์ด๋ฆ ํ์ผ ์ด๋ฆ ์ค ๋ฒํธ ๋ชจ๋ ์ด๋ฆ ๋ชจ๋ ๋ฒ์ ํด๋์ค ์ด๋ฆ ๋ฉ์๋ ์ด๋ฆ ํ์ผ ์ด๋ฆ ์ค ๋ฒํธ ๋ชจ๋ ์ด๋ฆ ๋ชจ๋ ๋ฒ์ ํด๋์ค ์ด๋ฆ ๋ฉ์๋ ์ด๋ฆ ํ์ผ ์ด๋ฆ ์ค ๋ฒํธ ๋ชจ๋ ์ด๋ฆ ๋ชจ๋ ๋ฒ์ |
3. ์คํ
์คํ ์ถ์ ์ด ๋ฌด์์ธ์ง ์ด๋ฏธ ์๊ณ ์์ง๋ง ์คํ (Stack ํด๋์ค) ์ด ๋ฌด์์ ๋๊น ?
์คํ์ ์์๋ฅผ ์ถ๊ฐํ๊ณ ์์๋ฅผ ๊ฒ์ํ ์ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋์์ ์์๋ง ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋จผ์ ๋ง์ง๋ง์ผ๋ก ์ถ๊ฐ๋ ์์๋ฅผ ๊ฐ์ ธ์จ ๋ค์ ๋ ๋ฒ์งธ์์ ๋ง์ง๋ง์ผ๋ก ์ถ๊ฐ๋ ์์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
์ด๋ฆ ์คํ ์์ฒด๋ ์ข ์ด ๋๋ฏธ์ ์ํธ ์์ฉํ๋ ๋ฐฉ์๊ณผ ๊ฐ์ ์ด ๋์์ ์ ์ํฉ๋๋ค. ์ํธ 1, 2, 3์ ์คํ์ ๋ฃ์ผ๋ฉด ์ญ์์ผ๋ก ํ์ํด์ผ ํฉ๋๋ค. ๋จผ์ ์ธ ๋ฒ์งธ ์ํธ, ๊ทธ ๋ค์ ๋ ๋ฒ์งธ ์ํธ, ๊ทธ๋ฆฌ๊ณ ์ฒซ ๋ฒ์งธ ์ํธ๋ง.
Java์๋ ๋์ผํ ์ด๋ฆ๊ณผ ๋์์ ๊ฐ์ง ํน๋ณํ Stack ์ปฌ๋ ์
ํด๋์ค๋ ์์ต๋๋ค. ArrayList
์ด ํด๋์ค๋ ๋ฐ ์ ๋ง์ ๋์์ ๊ณต์ ํฉ๋๋ค LinkedList
. ๊ทธ๋ฌ๋ ์คํ ๋์์ ๊ตฌํํ๋ ๋ฉ์๋๋ ์์ต๋๋ค.
ํ๋ ์์ | ์ค๋ช |
---|---|
|
obj ์คํ์ ๋งจ ์์ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค. |
|
์คํ์ ๋งจ ์์์ ์์๋ฅผ ๊ฐ์ ธ์ต๋๋ค(์คํ ๊น์ด๊ฐ ๊ฐ์ํจ). |
|
์คํ์ ๋งจ ์์ ์๋ ํญ๋ชฉ์ ๋ฐํํฉ๋๋ค(์คํ์ ๋ณ๊ฒฝ๋์ง ์์). |
|
์ปฌ๋ ์ ์ด ๋น์ด ์๋์ง ํ์ธ |
|
์ปฌ๋ ์
์์ ๊ฐ์ฒด๋ฅผ ๊ฒ์ํ๊ณ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.index |
์:
์ํธ | ์คํ ๋ด์ฉ(์คํ์ ๋งจ ์๋ ์ค๋ฅธ์ชฝ์ ์์) |
---|---|
|
|
์คํ์ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฝค ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋์ ์ด๊ฒ์ ์ ์ฉํ ์ปฌ๋ ์ ์ ๋๋ค.
4. ์์ธ ์ฒ๋ฆฌ ์ค ์คํ ์ถ์ ํ์
๋ฉ์๋ ํธ์ถ ๋ชฉ๋ก์ ์คํ ์ถ์ ์ด๋ผ๊ณ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น ? ๋ฉ์๋ ๋ชฉ๋ก์ ๋ฉ์๋ ์ด๋ฆ์ด ์๋ ์ข ์ด ๋๋ฏธ๋ก ์๊ฐํ๋ฉด ๋ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ํด๋น ๋ฉ์๋ ์ด๋ฆ์ด ์๋ ์ํธ๋ฅผ ์คํ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ์ข ์ด๊ฐ ๊ทธ ์์ ์นํ์ง๋๋ค.
๋ฉ์๋๊ฐ ๋๋๋ฉด ์คํ ๋งจ ์์ ์๋ ์ํธ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ๊ทธ ์์ ๋ชจ๋ ์ํธ๋ฅผ ์ ๊ฑฐํ์ง ์๊ณ ์คํ ์ค๊ฐ์์ ์ํธ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ํธ์ถํ ๋ชจ๋ ๋ฉ์๋๋ฅผ ์ข ๋ฃํ์ง ์๊ณ ์ผ๋ จ์ ํธ์ถ ๋์ค์ ๋ฉ์๋๋ฅผ ์ข ๋ฃํ ์ ์์ต๋๋ค.
์์ธ
์คํ์ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ฉ๋๋ ์์ธ ์ฒ๋ฆฌ ์ค์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์์ธ์๋ ํ์ฌ ์คํ ์ถ์ ์ด ํฌํจ๋ฉ๋๋ค . ์ด ์คํ์ ๊ธฐ๋ณธ ๋ฉ์๋์์ ์์ํ์ฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ฉ์๋๋ก ๋๋๋ ๋ฉ์๋ ๋ชฉ๋ก ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ ๋๋ค. ์์ธ๊ฐ ๋ฐ์ํ ์ค๋ ์์ต๋๋ค!
์ด ์คํ ์ถ์ ์ ์์ธ ๋ด๋ถ์ ์ ์ฅ๋๋ฉฐ ๋ค์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ๊ฒ์ํ ์ ์์ต๋๋ค.StackTraceElement[] getStackTrace()
์:
์ํธ | ๋ฉ๋ชจ |
---|---|
|
Catch the exception ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์กด์ฌํ๋ ์คํ ์ถ์ ์ ๊ฐ์ ธ์ต๋๋ค. |
์ด๊ฒ์ ํด๋์ค์ ๋ฉ์๋ Throwable
์ด๋ฏ๋ก ํด๋์ค์ ๋ชจ๋ ์์(์ฆ, ๋ชจ๋ ์์ธ)์ด ๋ฉ์๋๋ฅผ ๊ฐ์ง๋๋ค getStackTrace()
. ๋งค์ฐ ํธ๋ฆฌํ์ฃ ?
์์ธ์ ์คํ ์ถ์ ํ์
๊ทธ๋ฐ๋ฐ ์ด Throwable
ํด๋์ค์๋ ์์ธ ๋ด๋ถ์ ์ ์ฅ๋ ๋ชจ๋ ์คํ ์ถ์ ์ ๋ณด๋ฅผ ํ์ํ๋ ์คํ ์ถ์ ์์
์ ์ํ ๋ ๋ค๋ฅธ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ๋ผ๊ณ ํฉ๋๋ค printStackTrace()
.
๋งค์ฐ ํธ๋ฆฌํ๊ฒ ์์ธ๊ฐ ์์ผ๋ฉด ํธ์ถํ ์ ์์ต๋๋ค.
์:
์ํธ |
---|
|
์ฝ์ ์ถ๋ ฅ |
|
GO TO FULL VERSION