๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

BackEnd/Java

1020 JAVA - Exception ~ java_util_package

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์˜ˆ์™ธ ์ฒ˜๋ฆฌ Exception 

 

 

 

 

๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์€ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋œ๋‹ค.

์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜๋ถ€ํ„ฐ ์•„๋ž˜์ชฝ์˜ ์ฝ”๋“œ๋“ค์€ ์‹คํ–‰๋˜์ง€ ๋ชปํ•œ๋‹ค.

 

์˜ค๋ฅ˜ (Error)์™€ ๋‹ฌ๋ฆฌ ์‹ฌ๊ฐ๋„๊ฐ€ ๋‚ฎ์œผ๋ฉฐ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (Exception Handling) ์„ ํ†ตํ•ด ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ,

ํ•ด๊ฒฐ์ฑ…์„ ๊ธฐ์ˆ ํ•˜์—ฌ ๋น„์ •์ƒ์ ์ธ ์ข…๋ฃŒ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด try - cath ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ฝ”๋“œ๋“ค์„ try ๋ธ”๋ก ๋‚ด์— ๊ธฐ์ˆ ํ•˜๊ณ , 

์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด JVM์— ์˜ํ•ด ํ•ด๋‹น ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ ๋ฐ›์•„ catch ๋ธ”๋ก ์ค‘ ์ผ์น˜ํ•˜๋Š” ํƒ€์ž…์— ๋Œ€ํ•œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜์—ฌ 

์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. 

 

๋งŒ์•ฝ, ์ผ์น˜ํ•˜๋Š” catch ๋ธ”๋ก์ด ์—†์„ ๊ฒฝ์šฐ, ํ”„๋กœ๊ทธ๋žจ์€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋œ๋‹ค. 

 

 

 

 


 

 

 

< Exception ํด๋ž˜์Šค ๋ฐ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ >

 

์ปดํŒŒ์ผ ์‹œ์ ์—์„œ ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๋Š” Compile Checked Exception 

์‹คํ–‰ ์‹œ์ ์—์„œ ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” Compile Unchecked Exception 

 

 

Compile Checked Exception ๊ณ„์—ด
IOException SQLException ๋“ฑ

 

 

Compile Unchecked Exception ๊ณ„์—ด
RuntimeException ๋“ฑ 
=> ArrayIndexOutOfBoundsException, NullPointExcepton)

 

 

 

 

< ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• >

try {
	//์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฒ”์œ„์˜ ์ฝ”๋“œ๋“ค...
    //=> ์˜ˆ์™ธ ๋ฐœ์ƒ ์ฝ”๋“œ ์•„๋ž˜์ชฝ ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋“ค์€ ์‹คํ–‰๋˜์ง€ ๋ชปํ•œ๋‹ค. 
    
    } catch(์˜ˆ์™ธํด๋ž˜์Šค๋ช…1 ๋ณ€์ˆ˜๋ช…) {
    //์˜ˆ์™ธ ํด๋ž˜์Šค1์— ํ•ด๋‹นํ•˜๋Š” ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ์ฒ˜๋ฆฌํ•  ์ฝ”๋“œ๋“ค..
    } catch(์˜ˆ์™ธํด๋ž˜์Šค๋ช…n ๋ณ€์ˆ˜๋ช…) {
    //์˜ˆ์™ธ ํด๋ž˜์Šคn์— ํ•ด๋‹นํ•˜๋Š” ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ์ฒ˜๋ฆฌํ•  ์ฝ”๋“œ๋“ค..
    } finally {
    //์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ๋ฌด์กฐ๊ฑด ์‹คํ–‰ํ•  ๋ฌธ์žฅ๋“ค...
    //ex) DB ์ž์› ๋ฐ˜ํ™˜, I/O ์ž์› ๋ฐ˜ํ™˜ ๋“ฑ
    
    }

 

 

Error!

int num = 0;
System.out.println(3/num);

๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 0์ธ ๊ฒฝ์šฐ ArithmeticException ์˜ˆ์™ธ ๋ฐœ์ƒ

=> java.lang.ArithmeticException : by zero

 

0์— ์˜ํ•œ ๋‚˜๋ˆ—์…ˆ์œผ๋กœ ์ธํ•ด ์˜ˆ์™ธ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€. 

 

 

 

<์˜ˆ์™ธ ์ฒ˜๋ฆฌ>

try {
	//์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ฝ”๋“œ
    int num = 0;
    System.out.println(3/num);
    //๋งŒ์•ฝ ์ด ์ง€์ ์—์„œ ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ๋‚˜๋จธ์ง€ try ๋ธ”๋ก์˜ ์ฝ”๋“œ๋“ค์€ ์‹คํ–‰x 
    ๋ฐ”๋กœ catch ๋ฌธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.
    
   	 }catch() {
     // ArithmeticException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•  ์ฝ”๋“œ๋“ค ๊ธฐ์ˆ 
     // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ด ๋ธ”๋ก์€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. 
    	 e.printStackTrace(); //์˜ˆ์™ธ ํด๋ž˜์Šค, ๋ฐœ์ƒ ์œ„์น˜, ์›์ธ ๋“ฑ์„ ์ž์„ธํžˆ ์ถœ๋ ฅ
   	 }
    }

 

Error!

int[] arr = {1, 2, 3};
System.out.println(arr[5]);

๋ฐฐ์—ด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค ์ ‘๊ทผ ์‹œ ArrayIndexOutBoundsException ๋ฐœ์ƒ 

 

 


 

 

๐Ÿ’ก java_util_package

 

 

 

java.util ํŒจํ‚ค์ง€  Random ํด๋ž˜์Šค
๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋“ค์˜ ๋ชจ์Œ
 ๋‚œ์ˆ˜ ์ƒ์„ฑ, ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ ๊ด€๋ฆฌ, ์ž๋ฃŒ๊ตฌ์กฐ ๋“ฑ
 ๋‚œ์ˆ˜ ๋ฐœ์ƒ ๊ธฐ๋Šฅ ์ „์šฉ ํด๋ž˜์Šค
 static ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ํ•„์ˆ˜
  ์ •์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋‚œ์ˆ˜ ์ œ๊ณต
 => nextXXX() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐํƒ€์ž… ๋‚œ์ˆ˜ ๋ฐœ์ƒ
 => ํŠนํžˆ, nextInt() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ •์ˆ˜ํ™” ๊ณผ์ • ์—†์ด ์ •์ˆ˜ํ˜• ๋‚œ์ˆ˜ ๋ฐœ์ƒ

 

Random ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
Random r = new Random();

for(int i = 1; i <= 10; i++) {
// nextInt() ๋ฉ”์„œ๋“œ : intํ˜• ๋ฒ”์œ„(-21์–ต ~ +21์–ต) ๋‚œ์ˆ˜ ๋ฐœ์ƒ
//			System.out.println("intํ˜• ๋ฒ”์œ„์˜ ๋‚œ์ˆ˜ : " + r.nextInt());

// nextDouble() ๋ฉ”์„œ๋“œ : double ํ˜• ๋ฒ”์œ„ ๋‚œ์ˆ˜ ๋ฐœ์ƒ
// => Math.random() ๋ฉ”์„œ๋“œ์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ
//			System.out.println("doubleํ˜• ๋ฒ”์œ„์˜ ๋‚œ์ˆ˜ : " + r.nextDouble());

// nextBoolean() ๋ฉ”์„œ๋“œ : true ๋˜๋Š” false ๋‚œ์ˆ˜ ๋ฐœ์ƒ
//			System.out.println("booleanํ˜• ๋ฒ”์œ„์˜ ๋‚œ์ˆ˜ : " + r.nextBoolean());

// nextInt(int) ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฒ”์œ„์˜ ๋‚œ์ˆ˜ ๋ฐœ์ƒ
// => ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ตœ๋Œ€๊ฐ’(x) ์ „๋‹ฌ ์‹œ : 0 ~ x -1 ๋ฒ”์œ„์˜ ๋‚œ์ˆ˜ ๋ฐœ์ƒ
//			System.out.println("0 ~ 9 ์‚ฌ์ด์˜ ๋‚œ์ˆ˜ : " + r.nextInt(10));

// 1 ~ ์ตœ๋Œ€๊ฐ’(x) ์‚ฌ์ด์˜ ๋‚œ์ˆ˜ ๋ฐœ์ƒ์„ ์œ„ํ•ด์„œ๋Š” nextInt(x) + 1 ํ•„์š”
System.out.println("1 ~ 10 ์‚ฌ์ด์˜ ๋‚œ์ˆ˜ : " + (r.nextInt(10) + 1));

}

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•