-
JAVA ์๋ฐ ์์ธ์ฒ๋ฆฌ, throws, ์ฌ์ฉ์์ ์ ์์ธํด๋์คJAVA 2020. 8. 10. 23:55
๐ฏ ์๋ฐ ์์ธ์ฒ๋ฆฌ์ throwsํค์๋, ์ฌ์ฉ์์ ์ ์์ธํด๋์ค๋ฅผ ์์๋ณธ๋ค.
์์ธ์ฒ๋ฆฌ (Exception Handling)
์์ธ๋ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฐ์๋๋ ์๋์น์์ ๋ฌธ์ ๋ฅผ ๋ปํ๋ค. ์์ธ๊ฐ ๋ฐ์๋๋ฉด ํ๋ก๊ทธ๋จ์ ์ค๊ฐ์ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค. ์์ธ๊ฐ ๋ฐ์ํ์ ๋ ํ๋ก๊ทธ๋จ์ด ๋๊น์ง ์ ์์ข ๋ฃ ๋๋๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ์์ธ์ฒ๋ฆฌ๋ผ๊ณ ํ๋ค. ์ด ๋ฐฉ๋ฒ์ ํตํด ์์ธ๊ฐ ๋ฐ์๋ ์ด์ ์ ์์ธ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๋๋จธ์ง ์์ ์ ๊ณ์ ์คํํ๊ฒ ํ ์ ์๋ค. ์์ธ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ํจ์ ์์์ ์ง์ ์๋ฌ์ฝ๋๋ฅผ ์ก๋๋, ํจ์๋ฅผ ํธ์ถํ ๊ณณ์์ ์๋ฌ๋ฅผ ์ก๋๋ ๋ ์ข ๋ฅ๋ก ๋๋๋ค.
์์ธ์ฒ๋ฆฌ๋ ์ค๋ฅ๊ฐ ์๋ ์ฝ๋๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ค. ์ฐ๋ฆฌ๊ฐ ์คํํ๋ ์ฝ๋๋ ์์ฐจ๋ฌธ์ด๋ฉฐ, ํ ๋ฒ ์คํ๋ ๋ฌธ์ฅ์ ๋ค์ ์คํ์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ ์์ธ ๋ฐ์์ ์์ ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ๋ฐ์ํ ์ค๋ฅ๊ฐ ํ๋ก๊ทธ๋จ ์๋์ ๋ฐฉํด๋์ง ์๊ฒ ์์ธ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
์์ธ์ฒ๋ฆฌ๋ฅผ ์ํด ์๋ฐ์์๋ ์์ธํด๋์ค API๋ฅผ ์ ๊ณตํ๋ค. ์์ธ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ
Exception
ํด๋์ค์ ํ์ํด๋์ค์ธ Runtime Exception์๋ ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ArithmeticException
,NullPointerException
,ArrayIndexOutofBoundsException
๋ฑ์ ํ์ํด๋์ค๊ฐ ์๋ค.try ~ catch ๋ฌธ
try{ ๋ฌธ์ฅ1; ๋ฌธ์ฅ2; }catch( ์์ธํด๋์ค๋ช e){ ์์ธ์ฒ๋ฆฌ์ฝ๋; }
์์ธ๊ฐ ๋ฐ์๋ ์ฝ๋ ๋ด์์ ์์ธ๋ฅผ ์ง์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. try ๋ธ๋ก ์์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ์ฝ๋๋ฅผ ์ ๊ณ , catch ๋ธ๋ก ์์ ์์ธ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ฐธ์กฐ๋ณ์ e๋ ์์ธ๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ฐ, ๋ฐ์๋ ์์ธํด๋์ค๋ ๋ณ์ e์ ํด๋์คํ์ ์ด ๋์ผํ ๊ฒฝ์ฐ ์ผ์นํ๋ catch๋ฌธ์ด ์คํ๋๋ค. ์ฐธ์กฐ๋ณ์ e๋ฅผ ํตํด ๋ฐ์๋ ์์ธ์ ๋ณด๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
public class ArithmeticException { public static void main(String[] args) { System.out.println("ํ๋ก๊ทธ๋จ ์์"); int value = 0; int num = 15/value; int result = num + 100; System.out.println("์ฐ์ฐ๋ ๊ฐ: "+ result); System.out.println("ํ๋ก๊ทธ๋จ ์ ์ ์ข ๋ฃ"); } }
15๋ฅผ 0์ผ๋ก ๋๋๋ ์๊ฐ ์์ธ ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋๊ณ ์คํ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค. ์คํ๊ฒฐ๊ณผ๋ ํ๋ก๊ทธ๋จ ์์๊น์ง๋ง ์ถ๋ ฅ๋๋ค. ์ด๋ค ์๋ฅผ 0์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ ArithmeticException ์์ธ๊ฐ ๋ฐ์ํ๋ค. ์ด์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ด ๋๊น์ง ์ ์์ข ๋ฃ๋๋๋ก ํด์ผํ๋ค.
public class Ex09_2 { public static void main(String[] args) { System.out.println("์์"); try { int value = 0; int num = 3 / value; int result = num +100; System.out.println("์ฐ์ฐ๋ ๊ฐ: "+result); }catch (ArithmeticException e) { // System.out.println(e.getMessage()); e.printStackTrace(); } System.out.println("ํ๋ก๊ทธ๋จ ์ ์ ์ข ๋ฃ"); } }
3์ 0์ผ๋ก ๋๋ ๋ถ๋ถ์์ ์์ธ๊ฐ ๋ฐ์ํ๋ค. ์ด ๋ถ๋ถ์ try๋ก ๋ฌถ์ด์ค๋ค. ์์คํ ์ ์ด ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ ์ ํ ์์ธํด๋์ค๋ฅผ ์ฐพ๊ธฐ ์ํด ์๋์ผ๋ก ๊ฐ์ฒด์์ฑ์ ํ๊ณ ,
Exception e = new Exception("์์ธ์ถ๋ ฅ๋ฌธ์์ด");
์์ธ์ฒ๋ฆฌ์ ํ์ํ ๋ชจ๋ ์์ธ์ ๋ณด๋ฅผ ์ฐธ์กฐํ๋ ๋ณ์ e๋ฅผ ์๋ฐ์ฝ๋๋ก ๋์ง๋ค. ๋ด๋ถ์ ์ผ๋ก throw e๊ฐ ์คํ๋์ด catch์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ํ๋ก๊ทธ๋จ์ด ์ญ ์คํ๋๋ฉฐ ์ ์์ข ๋ฃ๋๋ค.์์คํ ์์ throwํ๊ธฐ๋๋ฌธ์ ์๋ฐ์ฝ๋์์๋ ๊ทธ๊ฑธ ์ก์์ผ ํ๋ค. ์์ธํด๋์ค ํ์ ์ด ์ผ์นํด์ผ ์ก์ ์ ์๊ณ , ๋คํ์ฑ์ ์ ์ฉํ๋ฉด ์์ํด๋์ค๋ ๋ชจ๋ ํ์ ์์ธํด๋์ค๋ฅผ catchํ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ์ต์์ ์์ธํด๋์ค์ธ Exception์ ์ฌ์ฉํ๋ค.
์์ธ์ฒ๋ฆฌ ์ฝ๋์์ ์ฌ์ฉ๊ฐ๋ฅํ ๋ฉ์๋
e.getMessage()
: ๊ฐ๋ตํ๊ฒ ์์ธ์ ๋ณด ์ถ๋ ฅe.printStackTrace()
: ์์ธ๋ฐ์ ๊ณผ์ ๊ณผ ์์ธ ์ฝ๋ ๋ผ์ธ๋๋ฒ ์ถ๋ ฅ๋ค์ค catch ๋ฌธ
try{ ๋ฌธ์ฅ1; ๋ฌธ์ฅ2; }catch( ์์ธํด๋์ค๋ช ๋ณ์๋ช ){ ์์ธ์ฒ๋ฆฌ์ฝ๋; }catch( ์์ธํด๋์ค๋ช ๋ณ์๋ช 2){ ์์ธ์ฒ๋ฆฌ์ฝ๋; }
์คํ๋ฌธ์ด ์ฌ๋ฌ ๊ฐ๋ฉด ๋น์ฐํ ์ฌ๋ฌ ๊ฐ์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด ๋ ๋ฐ์๋ ์์ธ๋ฅผ ์ ํํ ๋ชจ๋ฅผ ๊ฒฝ์ฐ ์บ์น๋ฌธ์ ๋ค์ค์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ๋ค์ค catch๋ฌธ์ ์์ฑ๋ ์์ธํด๋์ค์ ๋ณ์์ ๋ฐ์ดํฐํ์ด ๋ค๋ฅด๋ฉด ๋ค์ ์บ์น๋ฌธ์ด ์ํ๋๋ ํํ์ด๋ค.
๋คํ์ฑ์ ์ ์ฉํ ์ ์์ผ๋ฉฐ ๋ฐ๋์ ๊ณ์ธต๊ตฌ์กฐ๊ฐ ๋ฎ์ ํ์ํด๋์ค๋ถํฐ catchํด์ผ ๋๋ค. ์์ํด๋์ค๋ถํฐ ์บ์นํ๋ฉด ์ฒซ๋ฒ์งธ ์บ์น๋ธ๋ก์์ ๋ชจ๋ ์์ธ๊ฐ ์ฒ๋ฆฌ๋์ด ํ์ํด๋์ค์ ๋ธ๋ก์ ์คํํ์ง ๋ชปํด ์ปดํ์ผ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
public class Ex09_3 { public static void main(String[] args) { System.out.println("ํ๋ก๊ทธ๋จ ์์"); String name = null; try { int num = 3 / 0; System.out.println("๋ฌธ์์ด์ ๊ธธ์ด:" + name.length()); }catch (NullPointerException e) { System.out.println(e.getMessage()); }catch(ArithmeticException e2) { System.out.println(e2.getMessage()); }catch(Exception e3) { System.out.println("๋ชจ๋ ์์ธ์ฒ๋ฆฌ ๊ฐ๋ฅ"); } System.out.println("ํ๋ก๊ทธ๋จ ์ ์ ์ข ๋ฃ"); } }
try ๋ธ๋ก์์ 3์ 0์ผ๋ก ๋๋์๊ธฐ ๋๋ฌธ์ ArithmeticException ์์ธ๊ฐ ๋ฐ์ํ๋ค. e์์ ์์ธ๊ฐ ์กํ์ง ์๊ณ , e2์์ ์์ธ๋ฅผ ์ก๊ณ ์บ์น๋ฌธ์ ์คํํ ํ ํ๋ก๊ทธ๋จ์ด ์ ์ ์ข ๋ฃ๋๋ค.
NullPointerException์ null๊ฐ์ ๊ฐ์ง ์ฐธ์กฐ๋ณ์๋ก ๊ฐ์ฒด๋ฉค๋ฒ ์ ๊ทผ์ ๋ฐ์ํ๋ ์์ธ๋ฅผ ๋งํ๋ค.
finally ๋ฌธ
try{ ๋ฌธ์ฅ1; ๋ฌธ์ฅ2; }catch( ์์ธํด๋์ค๋ช ๋ณ์๋ช ){ ์์ธ์ฒ๋ฆฌ์ฝ๋; }catch( ์์ธํด๋์ค๋ช ๋ณ์๋ช 2){ ์์ธ์ฒ๋ฆฌ์ฝ๋; }finally{ ๋ฐ๋์ ์ํ๋๋ ๋ฌธ์ฅ }
์์ธ ๋ฐ์ ์ฌ๋ถ์ ์๊ด์์ด ํญ์ ์คํ๋์ด์ผ ํ๋ ๋ฌธ์ฅ์ ์ง์ ํ๋ค.
throws - ์์ธ์ฒ๋ฆฌ ์์
[์ง์ ์] ๋ฆฌํดํ์ ๋ฉ์๋๋ช ([ํ๋ผ๋ฏธํฐ]) throws ์์ธํด๋์ค, ์์ธํด๋์ค2{ }
์์ธ๊ฐ ๋ฐ์ํ ๊ณณ์์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด์ง๋ง ํธ์ถํ ๊ณณ์ผ๋ก ์์ธ์ฒ๋ฆฌ๋ฅผ ๋๊ธฐ๋ ๊ฒ์ด throws ๋ฐฉ๋ฒ์ด๋ค. ๊ณ์ ์์ํ๋ฉด mainํจ์๊น์ง ๊ฐ๊ฒ๋๊ณ ์ต์ข ์ ์ผ๋ก ๋ฉ์ธํจ์์์ try catch๋ก ์์ธ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ๋ฉ์ธ์์๋ ์ฒ๋ฆฌํ์ง ์์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ๋น์ ์ ์ข ๋ฃ๋๋ค.
public class Ex09_5 { public static void a() throws ArithmeticException{ b(); } public static void b() throws ArithmeticException { int num = 3 /0; } public static void main(String[] args) { System.out.println("ํ๋ก๊ทธ๋จ ์์"); try { a(); }catch(ArithmeticException e) { System.out.println(e.getMessage()); } System.out.println("ํ๋ก๊ทธ๋จ ์ ์ ์ข ๋ฃ"); } }
๋ฉ์ธ๋ฉ์๋์์ ํ๋ก๊ทธ๋จ์ด ์์๋๊ณ try ๋ธ๋ก์์ ์์ธ๊ฐ ์๋ a๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. a๋ฉ์๋๋ฅผ ๊ฐ๋ณด๋ b๋ฉ์๋๋ฅผ ํธ์ถํ๊ธธ๋ b๋ฉ์๋๋ฅผ ์คํํด๋ณด๋ ์์ธ๊ฐ ๋ฐ์ํ๋ค. throws๋ ์ด ์์ธ์ฒ๋ฆฌ๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ๋ ๋๊ธฐ๋ ํค์๋๋ค. b๋ฅผ ํธ์ถํ ๊ณณ a๋ฅผ ๊ฐ๋ณด๋ ๋ throws ํค์๋๋ฅผ ์ฌ์ฉํด์ ํธ์ถํ main๋ฉ์๋๋ก ์์ธ์ฒ๋ฆฌ๋ฅผ ๋๊ธด๋ค. ๋ฐ๋ผ์ ๋ฉ์ธ๋ฉ์๋ ์์์ ๋๊ฒจ์ง ์์ธ๋ฅผ ์ก๊ณ ์ฒ๋ฆฌํด์ผํ๋ค. ๊ทธ๋ฐ ๋ค์ ํ๋ก๊ทธ๋จ์ ์ ์์ข ๋ฃ๋๋ค.
public class Test { public static void a() throws NullPointerException { b(); } public static void b() throws NullPointerException { String name = null; System.out.println(name.length()); } public static void main(String[] args) { System.out.println("ํ๋ก๊ทธ๋จ ์์"); try { a(); }catch(NullPointerException e) { System.out.println(e.getMessage()); } System.out.println("ํ๋ก๊ทธ๋จ ์ข ๋ฃ"); } }
๋ฉ์ธ๋ถํฐ ์์ํด์ aํจ์ ํธ์ถ -> aํจ์๋ bํจ์ ํธ์ถ -> bํจ์๋ NullPointerException ๋ฐ์, ์ฒ๋ฆฌ๋ a์๊ฒ ๋ ๋๊น -> a๋ main์๊ฒ ๋ ๋๊น -> ์ต์ข ๋์ฐฉ์ง์ธ main์์ ์์ธ์ฒ๋ฆฌ ๋ด๋น -> ํ๋ก๊ทธ๋จ ์ข ๋ฃ
์ค๋ฒ๋ผ์ด๋ฉ ๋ฉ์๋์์ throws๋ฌธ์ ์ฌ์ฉํ ์์ธ์ฒ๋ฆฌ
class SuperClass{ public void a() throws NullPointerException {} public void b() throws Exception {} public void c() throws ArithmeticException{} class SubClass extends SuperClass { @Override public void a() {} @Override public void b() throws RuntimeException {} @Override public void c() throws Exception {} //err } public class Ex09_6 { public static void main(String[] args) {} }
๋ถ๋ชจํด๋์ค์ธ SuperClass์ 3๊ฐ์ ๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ์์ธํด๋์ค๋ฅผ throws ํ๋ค. ๋ถ๋ชจํด๋์ค๋ฅผ ์์ํ๋ SubClass์ ๊ฐ๊ฐ์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ๋ค. ์ด ๋ throws ์์ธํด๋์ค๋ ๋ถ๋ชจ์ ์์ธํด๋์ค๋ณด๋ค ๊ณ์ธต๊ตฌ์กฐ๊ฐ ๋ฎ๊ฑฐ๋ ์์ ์์ด์ผ ํ๋ค. ์๋ธํด๋์ค์ c๋ฉ์๋๋ ๋ถ๋ชจ์ ์์ธํด๋์ค๋ณด๋ค ์์ํด๋์ค์ธ Exception์ ์ฌ์ฉํด์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
throw - ๋ช ์์ ์์ธ ๋ฐ์
if( ์กฐ๊ฑด ){throw new ์์ธํด๋์ค(“์์ธ์ฒ๋ฆฌ๋ฌธ์์ด”);}
์์ธํด๋์ค์ ์กฐ๊ฑด์ ํด๋น๋์ง ์๋๋ฐ ์์ธ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ, ์กฐ๊ฑด์ ์ค์ ํด์ ๋ช ์์ ์ผ๋ก ์์ธ๋ฅผ ๋ฐ์์ํค๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ง๋ ํ ๋ฐ๋์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ๋น์ ์ ์ข ๋ฃ๋ฅผ ๋ง์ ์ ์๋ค. ์ฌ์ฉํ๊ณ ์ ํ๋ ์์ธํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ throw๋ก ์์ธ๋ฅผ ๋ฐ์์ํจ ๋ค throws๋ก ๋๊ฒจ์ ์์ธ์ฒ๋ฆฌํด์ฃผ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๋ค.
public class Ex09_5 { public static void a() throws ArithmeticException{ b(); } public static void b() throws NullPointerException { int num = 10; if(num == 10) { //๋ช ์์ ๊ฐ์ ์ ์ผ๋ก ํน์ Exception ๋ฐ์ํ๋ฉด์ ๋ฉ์ธ์ง ์ง์ ํด์ฃผ๊ธฐ throw new NullPointerException("๋ํฌ์ธํธ์ต์ ์ ๋ฐ์"); //๊ฐ์ฒด์์ฑํ๋ฉด์ ์๋ฌ๋ฉ์ธ์ง ๋ณด์ฌ์ฃผ๊ธฐ } } public static void main(String[] args) { System.out.println("ํ๋ก๊ทธ๋จ ์์"); try { a(); }catch(ArithmeticException e) { System.out.println(e.getMessage()); } System.out.println("ํ๋ก๊ทธ๋จ ์ ์ ์ข ๋ฃ"); } }
num์ด 10์ธ ๊ฒฝ์ฐ๋ฅผ ์์ธ๋ก ์ธ์ํ๋ ์์ธํด๋์ค๋ ์๋ค. ์์ธ๋ฅผ ๋ฐ์ํ๊ณ ์ถ๋ค๋ฉด throw๋ฅผ ์ฌ์ฉํด ๋ช ์์ ๊ฐ์ ์ ์ผ๋ก ์์ธ๋ฅผ ์ง์ ํ ์ ์๋ค. throw ํค์๋ ๋ค์ new๋ก ๊ฐ์ฒด์์ฑ ํด์ฃผ๊ณ ๊ดํธ ์์ ์์ธ์ฒ๋ฆฌ ๋ฉ์ธ์ง๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
public class ExTest { public int a(int num1, int num2) throws ArithmeticException{ int result = 0; result=num1/ num2; return result; } }
public class Test { public static void main(String[] args) { ExTest test= new ExTest(); try { test.a(10, 0); }catch(Exception e) { System.out.println(e.getMessage()); } } }
๋ฉ์ธํจ์ ์์์ ExTest์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ a๋ฉ์๋์ ์ธ์๋ฅผ ์ ์ด์ ํธ์ถํ๋ค. a๋ฉ์๋๋ ์ธ์๋ฅผ ๋ฐ์์์ 10์ 0์ผ๋ก ๋๋๋ค. ์ญ์ ์์ธ๊ฐ ๋ฐ์ํ๋ค. ์ด ์์ธ์ฒ๋ฆฌ๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ๋ ๋๊ธฐ๊ณ ์๋ค. ๋ฉ์ธํจ์๋ก ๋์์ catch๋ฌธ์์ ์์ธ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ๋ค.
public class ExTest { public int a(int num1, int num2) throws ArithmeticException{ int result = 0; if(num2 == 0) { throw new ArithmeticException("0์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ๋ค์ ์ ๋ ฅํด ์ฃผ์ธ์."); }else{ result = 0; result=num1/ num2; } return result; } }
์ด๋ฒ์๋ ExTest์ a๋ฉ์๋์์ throw ํค์๋๋ฅผ ์ฌ์ฉํด ๋ช ์์ ์ผ๋ก ์์ธ๋ฅผ ๋ฐ์์์ผฐ๋ค. ์ธ์๋ก ๋ฐ์ num2๊ฐ 0์ด ์๋๋ผ ๋ค๋ฅธ ์ซ์์ผ ๊ฒฝ์ฐ์ else๋ฌธ์ด ์คํ๋์ด ์ ์์ฒ๋ฆฌ๋๋ค.
์ฌ์ฉ์ ์ ์ ์์ธํด๋์ค
์ฌ์ฉ์๊ฐ ์๋ก์ด ์์ธํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก, Exception ์์ธํด๋์ค๋ฅผ ์์๋ฐ์ ์์ฑํ๋ค.
class UserException extends Exception { public UserException(String mesg) { super(mesg); } } public class Ex09_8 { public static void check(int num) throws UserException { if (num < 100) { throw new UserException("num ๊ฐ์ด 100๋ณด๋ค ์๋ค"); } } public static void main(String[] args) { System.out.println("ํ๋ก๊ทธ๋จ ์์"); try { check(70); } catch (UserException e) { System.out.println("์์ธ๋ฐ์: " + e.getMessage()); } System.out.println("ํ๋ก๊ทธ๋จ ์ ์ ์ข ๋ฃ"); } }
class ByZeroException extends Exception { public ByZeroException(String mesg) { super(mesg); } } public class Ex09_9 { public static void divide() throws ByZeroException{ try { int num = 3/0; }catch (ArithmeticException e) { throw new ByZeroException("0์ผ๋ก ๋๋์ด ์์ธ ๋ฐ์~"); } } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("ํ๋ก๊ทธ๋จ ์์"); try { divide(); }catch (ByZeroException e) { System.out.println("์์ธ๋ฐ์: "+e.getMessage()); } System.out.println("ํ๋ก๊ทธ๋จ ์ ์ ์ข ๋ฃ"); } }
๐ NEXT : ์๋ฐ ํต์ฌํด๋์ค ๊ณต๋ถํ๊ธฐ
๋ฐ์ํ'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA ์๋ฐ ์ปฌ๋ ์ Set๊ณ์ด HashSet (0) 2020.08.12 JAVA ์๋ฐ ์ ๋ค๋ฆญ (Generic) (0) 2020.08.11 JAVA ์๋ฐ ์ค์ฒฉํด๋์ค, comparator ์ธํฐํ์ด์ค (2) 2020.08.09 JAVA ์๋ฐ ์ธํฐํ์ด์ค, ๋์ปคํ๋ง (0) 2020.08.08 JAVA ์๋ฐ ์ถ์ํด๋์ค abstract (0) 2020.08.07