
자바의 예외 종류에는 크게 일반예외와 런타임예외가 있습니다. 일반예외는 이클립스가 친절하게 다 알려주지만,
런타임예외는 실행을 해봐야 오류가 뜨는지 안뜨는지 확인할 수 있습니다. 즉 이클립스가 알려주지 않는다는 이야기입니다.
오늘은 자바의 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가 아니라 다른 변수에 들어가버리면 예외가 뜹니다.

'Java' 카테고리의 다른 글
| 자바의 IO(Input/Output) (0) | 2022.05.06 |
|---|---|
| 스택(Stack)과 큐(Queue) (0) | 2022.05.06 |
| Hash Table과 특정 value값 찾아내기 (0) | 2022.04.21 |
| 특정 문자가 있는 인덱스 찾기 (0) | 2022.04.20 |
| for 반복문을 이용하여 구구단 출력하기 (0) | 2022.04.19 |