[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] Item13 ์™„๋ฒฝ๊ณต๋žต. UnCheckedException

2023. 2. 3. 15:22ใ†JAVA/Effective JAVA

728x90

 

item13. clone ์žฌ์ •์˜๋Š” ํ•ญ์ƒ ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ. 

" p80. ๋น„๊ฒ€์‚ฌ ์˜ˆ์™ธ(Unchecked Exception) ์˜€์–ด์•ผ ํ–ˆ๋‹ค๋Š” ์‹ ํ˜ธ๋‹ค."

 

 

UncheckedException 

public class MyException extends RuntimeException
{

}
public class MyApp
{
   public void hello()
   {
      System.out.println("hello");
      throw new MyException();
   }
 }
public static void main(String[] args)
{
   MyApp myApp = new MyApp();
   myApp.hello();
   
}

-> UncheckedException์„ ์‚ฌ์šฉํ•˜๋ฉด CheckedException์— ๋น„ํ•ด ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋˜๊ณ , try-catch๋กœ ๊ฐ์‹ธ๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ ์„ ์–ธ๋ถ€์— ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 

CheckedException์— ๋น„ํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. ๊ทผ๋ฐ ๋‹จ์ˆœํžˆ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ณ  ํŽธํ•˜๋‹ค๋Š” ์ด์œ ๋งŒ์œผ๋กœ UncheckedExcetpion(RuntimeException) ์„ ์„ ํƒํ•˜๋ฉด ์•ˆ๋œ๋‹ค. 

๊ทธ๋ ‡๋‹ค๋ฉด UncheckedException๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ ํ…๋ฐ CheckedException๊ฐ€ ์žˆ๋Š” ์ด์œ ๋Š” ๋ญ˜๊นŒ? 

 

 

CheckedException

public class MyCheckedException extends Exception
{
}
public void hello(String name) throws MyCheckedException
{
   if (name.equals("noUse")) {
      throw new MyCheckedException();
   }
}
try
{
   myApp.hello("noUse");
}
catch (MyCheckedException e)
{
   throw new RuntimeException(e);
}

CheckedException์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ try-catch๋กœ ์žก๊ฑฐ๋‚˜ ๋˜์ง€๊ฑฐ๋‚˜ ํ•ด์•ผํ•œ๋‹ค. 

CheckedException๋Š” ์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. 

 

๋ฐ˜๋Œ€๋กœ UnCheckedException ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. 

์ฑ…์—์„œ ๋‚˜์™”๋˜ 'CloneNotSupportedException์ด ์‚ฌ์‹ค์€ ๋น„๊ฒ€์‚ฌ ์˜€์–ด์•ผ ํ–ˆ๋‹ค๋Š” ์‹ ํ˜ธ๋‹ค. ' ๋„ ๋ณด๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

 

 

๐Ÿ‘พ ์žก์ง€ ์•Š์€ ์˜ˆ์™ธ๋ฅผ ๋ฉ”์„œ๋“œ์— ์„ ์–ธํ•˜๋Š” ์ด์œ ? 

-> ๋ฉ”์„œ๋“œ์— ์„ ์–ธํ•œ ์˜ˆ์™ธ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ผ๋ถ€๋กœ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ์ •๋ณด์ด๋‹ค. 

์™œ๋ƒํ•˜๋ฉด ๊ทธ๋ž˜์•ผ ํ•ด๋‹น ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

-> ๊ทผ๋ฐ UncheckedException์€ ์™œ ๋ฉ”์„œ๋“œ์— ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š”๊ฐ€ ํ•˜๋ฉด UncheckedException๋Š” ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์™ธ(์ˆซ์ž๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค, NULL ๋ ˆํผ๋Ÿฐ์Šค์— ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ๋“ฑ..) ์ธ๋ฐ ์ด๋Ÿฐ ์˜ˆ์™ธ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ „๋ฐ˜์— ๊ฑธ์ณ ์–ด๋””์„œ๋“  ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— UncheckedException์„ ๋ฉ”์„œ๋“œ์— ์„ ์–ธํ•˜๋„๋ก ๊ฐ•์ œํ•œ๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…ํ™•๋„๊ฐ€ ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

 

 

๐Ÿ“š ๊ทธ๋ ‡๋‹ค๋ฉด ์–ธ์ œ CheckedException์„ ์‚ฌ์šฉํ•˜๊ณ , UncheckedException์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? 

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ์˜ˆ์™ธ ์ƒํ™ฉ์„ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฒ€์‚ฌ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ•ด๋‹น ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์•„๋ฌด๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋น„๊ฒ€์‚ฌ ์˜ˆ์™ธ๋กœ ๋งŒ๋“ ๋‹ค! 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90