"์๋ ํ์ธ์, ์๋ฏธ๊ณ . ์ค๋์ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ์์ ์ ํ ๊ฒ์ ๋๋ค. ์์ธ์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ์์ธ๋ ํ๋ก๊ทธ๋จ ์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ํน๋ณํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋ฐ์ํ ์ ์๋ ์ค๋ฅ์ ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํ๋ก๊ทธ๋จ์์:
1. ํ๋ ๋๋ผ์ด๋ธ๊ฐ ์์ ํ ์ฐจ๋ฉด ํ๋ก๊ทธ๋จ์ด ํ์ผ ์ฐ๊ธฐ๋ฅผ ์๋ํ ์ ์์ต๋๋ค.
2. ํ๋ก๊ทธ๋จ์ด null ์ฐธ์กฐ๋ฅผ ์ ์ฅํ๋ ๋ณ์์ ๋ํ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๊ณ ์๋ํ ์ ์์ต๋๋ค.
3. ํ๋ก๊ทธ๋จ์ด ์ซ์๋ฅผ 0์ผ๋ก ๋๋๋ ค๊ณ ํ ์ ์์ต๋๋ค."
์ด๋ฌํ ๋ชจ๋ ์กฐ์น๋ก ์ธํด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฒฐ๊ณผ๋ ํ๋ก๊ทธ๋จ์ด ์ฆ์ ์ข ๋ฃ๋๋ ๊ฒ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ์ฝ๋ ์คํ์ ๊ณ์ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
"์?"
"์๋์ฐจ๊ฐ ๋๋ก๋ฅผ ๋ฒ์ด๋ ์ ๋ฒฝ์์ ๋จ์ด์ง๋ฉด ๊ณ์ ๋ฐํด๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ์ด์น์ ๋ง์ต๋๊น?"
"๊ทธ๋ผ ํ๋ก๊ทธ๋จ ์คํ์ ์ค์งํด์ผ ํฉ๋๊น?"
"์. ์ ์ด๋ ์ด๋ฐ ์ผ์ด ์์์ต๋๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋์์ต๋๋ค."
"๋งค์ฐ ํ๋ช ํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค."
"ํ์ง๋ง ํ๋ก๊ทธ๋จ์ ๊ณ์ ์คํํ๋ ๊ฒ์ด ์ข์ง ์์๊น์?"
"์. Word์ ์์ฒญ๋ ์์ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๊ณ ์ ์ฅํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ ์ฅ ์์ ์ด ์คํจํ์ง๋ง ํ๋ก๊ทธ๋จ์ด ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ๋ค๊ณ ๋ฏฟ๊ฒ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํ์๊ฒ ์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ๊ณ์ ์ ๋ ฅํ์ญ์์ค. ๊ทธ๊ฒ์ ์ด๋ฆฌ์์ ์ผ์ ๋๋ค. ๊ทธ๊ฒ?"
"๋ค."
"๊ทธ๋ฐ ๋ค์ ํ๋ก๊ทธ๋๋จธ๋ ํฅ๋ฏธ๋ก์ด ํด๊ฒฐ์ฑ ์ ๋ด๋์์ต๋๋ค. ๊ฐ ํจ์๋ ์์ ์ํ๋ฅผ ๋ฐํํฉ๋๋ค. 0์ ์์๋๋ก ์๋ํ์์ ์๋ฏธํฉ๋๋ค. ๋ค๋ฅธ ๊ฐ์ ์ผ๋ถ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ ์๋ฏธํ๊ณ ๋ฐํ ๊ฐ์ ์ค๋ฅ ์ฝ๋์์ต๋๋ค."
"๊ทธ๋ฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์๋ ๋จ์ ์ด ์์ต๋๋ค. ๋ชจ๋ (!) ํจ์ ํธ์ถ ํ ๋ฐํ ์ฝ๋(์ซ์)๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. ์ฐ์ ์ด๊ฒ์ด ๋ถํธํฉ๋๋ค. ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋๊ฐ ๊ฑฐ์ ์คํ๋์ง ์์ง๋ง ํฌํจ๋์ด์ผ ํฉ๋๋ค. ๋์งธ, ํจ์๋ ์ข ์ข ๋ค๋ฅธ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด ๊ฐ์ผ๋ก ๋ฌด์์ ํด์ผ ํฉ๋๊น?"
"๋ง์. ๋๋ ๊ทธ ์๊ฐํ์ด."
"๊ทธ๋ฌ๋ฉด ์์ธ์ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ํํ๋ก ๋ฐ์ ๋ฏธ๋๊ฐ ๋๋ํ์ต๋๋ค. ์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด Java Machine์ ๋ชจ๋ ์ค๋ฅ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํน์ ๊ฐ์ฒด(์์ธ)๋ฅผ ์์ฑํฉ๋๋ค. ๋ค๋ฅธ ์ค๋ฅ์ ๋ํ ๋ค๋ฅธ ์์ธ๊ฐ ์์ต๋๋ค.
2. ์์ธ๋ก ์ธํด ํ๋ก๊ทธ๋จ์ ์ฆ์ ํ์ฌ ํจ์์ ๋ค์ ํจ์ ๋ฑ์ ์ข ๋ฃํฉ๋๋ค. ์ฆ, ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ข ๋ฃํ ๋๊น์ง ๊ณ์๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ๋ Java Machine์ด 'ํธ์ถ ์คํ์ ํด์ ํ๋ค'๊ณ ๋งํ ์๋ ์์ต๋๋ค."
"ํ์ง๋ง ํ๋ก๊ทธ๋จ์ด ํญ์ ์ข ๋ฃ๋๋ ๊ฒ์ ์๋๋ผ๊ณ ํ์ จ์ต๋๋ค."
"๊ทธ๋ ์ต๋๋ค. ์์ธ๋ฅผ ํฌ์ฐฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๊ด์ฌ์ ๊ฐ๋ ์์ธ๋ฅผ ํฌ์ฐฉํ๊ณ ๊ทธ๋ค๊ณผ ํจ๊ป ๋ฌด์ธ๊ฐ๋ฅผ ํ๊ธฐ ์ํด ์ฌ๋ฐ๋ฅธ ์์น์ ํน๋ณํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ค์ํ ๊ฒ์ ๋๋ค."
"์ด ์์ ์ ์ํํ๋ ๋ฐ ๋์์ด ๋๋ ํน๋ณํ try-catch ๊ตฌ์ฑ์ด ์์ต๋๋ค . ์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค."
์์ธ(0์ผ๋ก ๋๋๊ธฐ)๋ฅผ ํฌ์ฐฉํ๊ณ ๊ณ์ ์๋ํ๋ ํ๋ก๊ทธ๋จ์ ์. |
---|
|
ํ๋ฉด ์ถ๋ ฅ: |
|
"๊ทธ๋ฐ๋ฐ ์ '๋ฉ์๋ 1์ ํธ์ถํ ํ. ์ด๊ฒ์ ์ ๋ ํ์๋์ง ์์ ๊ฒ์ ๋๋ค'๊ฐ ํ๋ฉด์ ํ์๋์ง ์์ต๋๊น?"
"๋ฌผ์ด์ฃผ์ ์ ๊ธฐ์ฉ๋๋ค. 25ํ์์ 0์ผ๋ก ๋๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์์ธ์ ๋๋ค. Java Machine์ ์ค๋ฅ์ ๋ํ ์ ๋ณด๊ฐ ์๋ ArithmeticException ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ๊ฐ์ฒด๊ฐ ์์ธ์ ๋๋ค."
"๋ฉ์๋ ๋ด์์ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค method1
. ์ด๋ก ์ธํด ๋ฉ์๋๊ฐ ์ฆ์ ์ข
๋ฃ๋ฉ๋๋ค. try-catch ๋ธ๋ก ์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๋ฉ์๋๊ฐ ์ข
๋ฃ ๋ฉ๋๋ค ."
" try ๋ธ๋ก ๋ด์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด catch ๋ธ๋ก ์์ catch๋ฉ๋๋ค . try ๋ธ๋ก์ ๋๋จธ์ง ์ฝ๋๋ ์คํ๋์ง ์์ต๋๋ค. ๋์ catch ๋ธ๋ก์ด ์คํ๋๊ธฐ ์์ํฉ๋๋ค. "
"์ดํด๊ฐ ์ ๋๋ค."
"์ฆ, ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค.
1. try ๋ธ๋ก ๋ด์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์์ธ๊ฐ ๋ฐ์ํ ๊ณณ์์ ์ฝ๋ ์คํ์ ๋ฉ์ถ๊ณ catch ๋ธ๋ก์ด ์คํ๋๊ธฐ ์์ํฉ๋๋ค.
2. ์์ธ ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉด try ๋ธ๋ก์ด ๋๊น์ง ์คํ๋๊ณ catch ๋ธ๋ก์ ์คํ๋์ง ์์ต๋๋ค . "
"๋ญ?"
"๊ฐ ๋ฉ์๋ ํธ์ถ ํ ๋ฉ์๋๊ฐ ์ ์์ ์ผ๋ก ๋ฐํ๋์๋์ง ๋๋ ์์ธ๋ก ์ธํด ๊ฐ์๊ธฐ ์ข ๋ฃ๋์๋์ง ํ์ธํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ์์ธ๊ฐ ์์ผ๋ฉด catch ๋ธ๋ก(์๋ ๊ฒฝ์ฐ)์ ์คํํ์ฌ ์์ธ๋ฅผ catchํฉ๋๋ค. catch ๋ธ๋ก์ด ์์ผ๋ฉด ํ์ฌ ๋ฉ์๋๋ฅผ ์ข ๋ฃํ๊ณ ์ฐ๋ฆฌ๋ฅผ ํธ์ถํ ๋ฉ์๋๊ฐ ๋์ผํ ๊ฒ์ฌ๋ฅผ ์ํํฉ๋๋ค."
"์ด์ ์ ๊ฒ ๊ฐ์์."
"ํ๋ฅญํ."
"catch ๋ฌธ์์ '์์ธ'๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น?"
" ๋ชจ๋ ์์ธ๋ Exception ํด๋์ค๋ฅผ ์์ํ๋ ํด๋์ค์ ๋๋ค. catch ๋ธ๋ก ์ ์์ธ ํด๋์ค๋ฅผ ์ง์ ํ์ฌ ํน์ ์์ธ๋ฅผ catchํ๊ฑฐ๋ ๊ณตํต ์์ ํด๋์ค์ธ Exception์ ์ง์ ํ์ฌ ๋ชจ๋ ์์ธ๋ฅผ catchํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ํ์ํ ๋ชจ๋ ์ค๋ฅ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ณ์ e์ ์ ๋ณด(์์ธ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํจ)"
"๋ฉ์ง๋ค! ๋ด ๋ฐฉ๋ฒ์์ ๋ค๋ฅธ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๊น?"
"ํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ํด์ผ ํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค."
public class ExceptionExample2
{
public static void main(String[] args)
{
System.out.println("Program starts");
try
{
System.out.println("Before calling method1");
method1();
System.out.println("After calling method1. This will never be shown");
}
catch (NullPointerException e)
{
System.out.println("Null reference. Exception has been caught");
}
catch (ArithmeticException e)
{
System.out.println("Division by zero. Exception has been caught");
}
catch (Exception e)
{
System.out.println("Any other errors. Exception has been caught");
}
System.out.println("Program is still running");
}
public static void method1()
{
int a = 100;
int b = 0;
System.out.println(a / b);
}
}
" try ๋ธ๋ก์ ์ฌ๋ฌ catch ๋ธ๋ก ๊ณผ ์์ ์ด๋ฃฐ ์ ์์ผ๋ฉฐ ๊ฐ ๋ธ๋ก์ ์ง์ ๋ ์ ํ์ ์์ธ๋ฅผ catchํฉ๋๋ค."
"์ดํดํ ๊ฒ ๊ฐ์์. ์์ง ์ง์ ์์ฑํ ์๋ ์์ง๋ง ์ฝ๋์์ ๋ฐ๊ฒฌํ๋ฉด ๋๋ ต์ง ์์ ๊ฒ์ ๋๋ค."
GO TO FULL VERSION