๑ `⌃´ ๑

자바의 예외 종류에는 크게 일반예외와 런타임예외가 있습니다. 일반예외는 이클립스가 친절하게 다 알려주지만,

런타임예외는 실행을 해봐야 오류가 뜨는지 안뜨는지 확인할 수 있습니다. 즉 이클립스가 알려주지 않는다는 이야기입니다.

오늘은 자바의 Runtime Exception에 대해 알아보겠습니다.

 

NullPointException

null인 값으로 무언가 하려고 할 경우에 뜨는 예외입니다.

 

1
2
3
4
5
String data = null;
   //data가 null인데 무언가 하려 했다.
   if (data.equals("true")) {
       System.out.println(data+"의 값이 true 입니다.");
   }
cs

 

data가 null이라 반복문에 들어갈 값이 없습니다. 이 경우 실행하면

 

이렇게 NullPointerException 예외가 뜹니다. data에 값을 넣어주면 해결됩니다.

 

ArrayOutofBoundException

배열의 특정 영역을 벗어나버린 예외입니다.

 

1
2
3
4
5
String[] arr = new String[2];
        
    arr[0= "data1";
    arr[1= "data2";
    arr[2= "data3";  //문제가 생긴 부분 : 크기가 2인데 3번째 값을 넣으려했다.
cs

배열 길이가 2밖에 안되는데 값을 3개나 넣으려 했습니다.

 

이 경우 역시 이클립스 자체적으로 오류를 알려주지 않으나 실행시에 예외처리 되었다고 알려줍니다.

배열 영역에 맞게 값을 조정해주면 해결됩니다.

 

 

NumberFormatException

숫자 형태가 아님에도 불구하고 숫자로 바꾸려고 할 경우에 발생합니다.

 

1
2
3
4
5
6
7
8
9
String data;
    int val;
        
    data = "1234";  //문자, 하지만 숫자의 형태
    val = Integer.parseInt(data);
    System.out.println(val);
        
    data = "123$";  //문자, 형태도 숫자가 아니다.
    val = Integer.parseInt(data);  //이 경우에는 숫자 변환이 될 수 없다.
cs

data 타입을 문자열로 선언했기 때문에 "1234"는 문자열을 숫자로 바꾸는 Integer.parseInt()메서드에 넣을 수 있는 반면

"123$"는 숫자로 변환시 특수문자로 인해 숫자도 문자도 될 수 없기 때문에 예외처리가 됩니다. 

 

 

ClassCast Exception

부모 형태에서 자신의 형태로 돌아갈 때, 잘못 돌아갈 경우 발생합니다.

 

1
2
3
4
5
Object value = 1234;
        
    int val = (int) value; //본래 형태로 돌아 갈 경우 형변환이 필요하다(Casting)
        
    String str = (String) value; // 돌아갈 때는 반드시 원형을 확인해야 한다.
cs

 

object는 자바의 세계에서 가장 큰 존재로, int와 String을 다 포함 할 수 있습니다.

하지만 1234는 본래 int 값이기 때문에, 캐스팅시 자신의 본래 값이 int가 아니라 다른 변수에 들어가버리면 예외가 뜹니다.

 

🎵 Playlist
loading...
00:00 / 00:00