Search
Duplicate

Debugging

νƒœκ·Έ
디버깅
ꡬ뢄
코데카데미
Syntax Errors
ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μ‚¬μš©ν•  λ•Œ 문법을 지킀지 μ•Šμ•„μ„œ μƒκΈ°λŠ” 였λ₯˜μ΄λ‹€. μ»΄νŒŒμΌλŸ¬κ°€ μž‘μ•„μ£ΌκΈ° λ•Œλ¬Έμ— μ‰½κ²Œ 발견/μˆ˜μ • ν•  수 μžˆλ‹€.
Run-time Errors
컴파일이 μ„±κ³΅ν•œ ν›„ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 λ°œμƒν•˜λŠ” 였λ₯˜μ΄λ‹€. μ»΄νŒŒμΌμ„ ν•  λ•Œμ—λŠ” 였λ₯˜κ°€ μ—†μ§€λ§Œ ν”„λ‘œκ·Έλž¨μ˜ λ‚΄μš©μ€ 컴퓨터가 μˆ˜ν–‰ν•  수 μ—†λŠ” μž‘μ—…μ„ ν•˜λ„λ‘ ν•˜κΈ° λ•Œλ¬Έμ— μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. 즉, μ‹€ν–‰ν•˜κΈ°μ „κΉŒμ§€λŠ” μ—λŸ¬λ₯Ό μΌμœΌν‚€λŠ” μš”μ†Œκ°€ μžˆλŠ”μ§€ μ•Œ 수 μ—†λ‹€.
(1) 0 으둜 λ‚˜λˆ„λ €λŠ” 경우
(2) μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” νŒŒμΌμ„ μ—΄λ €κ³  μ‹œλ„ν•  경우
두가지가 ν”ν•œ Run-time Error 이닀.
Exceptions
Exceptions λŠ” μ‹€ν–‰ν•  λ•Œ λ°œμƒν•˜κ³  ν”„λ‘œκ·Έλž¨ μ’…λ£Œλ₯Ό μΌμœΌν‚¬ 수 μžˆλŠ” 쑰건이닀. μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμ„ λ•Œ μžλ°”λŠ” μ˜ˆμ™Έμ˜ 이름, μ˜ˆμ™Έκ°€ λ°œμƒν•œ 라인, stack trace λ₯Ό ν¬ν•¨ν•œ 메세지λ₯Ό μ•Œλ €μ€€λ‹€.
Stack trace λŠ” λ‹€μŒμ„ ν¬ν•¨ν•œλ‹€.
(1) μ‹€ν–‰μ€‘μ΄λ˜ λ©”μ„œλ“œ
(2) ν˜ΈμΆœν•œ λ©”μ„œλ“œ
(3) κ·Έ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œ λ©”μ„œλ“œ
. . .
κ·Έ μ™Έ λ§Œλ‚  수 μžˆλŠ” μ˜ˆμ™Έμ˜ μ’…λ₯˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€.
ArithmeticException
0 으둜 λ‚˜λˆ„λŠ” λ“± μˆ˜ν•™μ μœΌλ‘œ 잘λͺ»λœ μž‘λ™μ„ ν•  λ•Œ λ°œμƒ
NullPointerException
ν˜„μž¬ null μƒνƒœμΈ κ°μ²΄μ—μ„œ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜κ±°λ‚˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ— μ ‘κ·Όν•˜λ €κ³  ν•  λ•Œ λ°œμƒν•œλ‹€.
ArrayIndexOutOfBoundsException
λ°°μ—΄μ˜ λ§ˆμ§€λ§‰ 인덱보닀 ν¬κ±°λ‚˜ 음수인 인덱슀λ₯Ό μ‚¬μš©ν•˜λ €κ³  ν•  λ•Œ λ°œμƒν•œλ‹€.
FileNotFoundException
μ—†λŠ” νŒŒμΌμ„ 찾으렀고 ν•  λ•Œ λ°œμƒν•œλ‹€.
Exception Handling
μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ” ν•œκ°€μ§€ 방법은 try/catch 문을 μ‚¬μš©ν•˜λŠ” 것이닀.
try 문은 μ‹€ν–‰ν•˜λŠ” λ™μ•ˆ μ—λŸ¬λ₯Ό ν…ŒμŠ€νŠΈ ν•  μ½”λ“œλΈ”λŸ­μ„ μ •μ˜ν•œλ‹€.
catch 문은 try λΈ”λŸ­μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν–ˆμ„ λ•Œ 싀행될 μ½”λ“œλΈ”λŸ­μ„ μ •μ˜ν•œλ‹€.
catch 문은 μ—¬λŸ¬κ°œ 생성할 수 μžˆλ‹€.
[μ˜ˆμ‹œ μ½”λ“œ]
try { // Block of code to try } catch (NullPointerException e) { // Print the error message like this: System.err.println("NullPointerException: " + e.getMessage()); // Or handle the error another way here }
Java
볡사
System.out.println λŒ€μ‹ μ— System.err.println 을 μ‚¬μš©ν•œλ‹€.
μ΄λŠ” 빨간색 ν…μŠ€νŠΈλ‘œ μ—λŸ¬λ₯Ό 좜λ ₯ν•΄ 쀄 것이닀.
Logic Errors
둜직 μ—λŸ¬λŠ” κ²‰μœΌλ‘œ λ³΄κΈ°μ—λŠ” μ—λŸ¬κ°€ μ—†μ§€λ§Œ λ§žμ§€μ•ŠλŠ” 좜λ ₯을 ν•˜λŠ” 것을 λ§ν•œλ‹€. ν”„λ‘œκ·Έλž¨ μ•ˆμ— λ””μžμΈ 결함이 μžˆμ„ λ•Œ λ°œμƒν•œλ‹€. μ•„λž˜λŠ” ν”ν•œ 둜직 μ—λŸ¬μ΄λ‹€.
(1) ν”„λ‘œκ·Έλž¨ λ‘œμ§μ— 결합이 μžˆλ‹€.
(2) if λ¬Έμ΄λ‚˜ for / while λ°˜λ³΅λ¬Έμ—μ„œ μ‹€μˆ˜λ₯Ό ν•˜λŠ” 경우
둜직 μ—λŸ¬λŠ” μ—λŸ¬ 메세지가 λœ¨μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ΄ˆλ³΄μžλ“€μ΄ μ•Œμ•„λ‚΄κΈ° κ°€μž₯ νž˜λ“€λ‹€.
Final tip
λ§Œμ•½ μ»΄ν”ŒλΌμ΄μ–΄κ°€ 100 개의 μ—λŸ¬ 메세지λ₯Ό 쀬닀면 그것은 ν”„λ‘œκ·Έλž¨μ— 100 개의 였λ₯˜κ°€ μžˆλ‹€λŠ” 말이 μ•„λ‹ˆλ‹€ 첫번째 μ—λŸ¬ 메세지가 κ°€μž₯ μ€‘μš”ν•˜λ‹€. κ·Έ μ—λŸ¬λ₯Ό ν•΄κ²°ν•˜λ©΄ μ•„λž˜ 였λ₯˜λ“€λ„ ν•΄κ²°λ˜κΈ° λ•Œλ¬Έμ΄λ‹€ 항상 맨 μœ„λ‘œ μ˜¬λΌκ°€μ„œ 디버깅을 ν•΄λ³΄μž