2021-01-09
오늘은 int형 변수와 String 변수를 같이 다루다 보면 자주 접할 수 있음 NumberFormatException에 대하여 알아보도록 하자. 우선 어떠한 상황에서 해당 예외가 발생하게 되는지부터 보도록 하자.
package eException;
public class main {
public static void main(String[] args){
String str = "100";
String str1 = "100 ";
int a = Integer.parseInt(str);
int b = Integer.parseInt(str1);
//공백이 포함되어 있어 예외 발생
//NumberFormatException
}
}
str 변수의 경우 공백없이 100이라는 문자열 데이터가 들어 있고 str1의 경우 100 뒤에 하나의 공백이 있는 것을 확인할 수 있다. 때문에 이와 같은 두 가지 변수를 int 형으로 변환할 경우 a는 정상적으로 int형으로 변환이 되지만, str1의 경우 공백이 포함되어 있어 숫자형 변수의 포맷에서 벗어나게 되어 아래와 같은 예외가 발생하게 된다.
해당 예외를 처리하기 위해 try / catch문을 사용해주면 간단히 처리할 수 있다. 코드는 아래와 같다.
package eException;
public class main {
public static void main(String[] args){
try {
String str = "100";
String str1 = "100 ";
int a = Integer.parseInt(str);
int b = Integer.parseInt(str1);
}catch (NumberFormatException e) {
System.out.println("--NumberFormatException 발생--");
System.out.println("기존 코드를 체크해 주세요!!");
}finally {
System.out.println("예외처리 코드가 오류없이 진행되었습니다.");
}
}
}
예외가 발생할 가능성이 있는 코드를 우선 try { . . .} 로 담아준다. 이후 메서드 catch를 이용해 매개변수(파라미터) 값으로 예상되는 예외와 그 예외 변수(보통 e로 선언함)를 넣어주고 중괄호에 발생 시 실행될 코드를 작성해 주면 된다.
(finally은 옵션으로 생략해도 무방하다. -> 코드가 예외가 발생여부를 떠나 반드시 실행되는 메서드이다.) 이후 실행하면 아래와 같이 예외가 처리되는 것을 확인할 수 있다.