안녕하세요. 제임스 입니다.

 

이번에는 개발 중 종종 발생하는 오류중 하나인 NumbreFormatException 에 대해 정리 해보겠습니다. 

 

NumbreFormatException 은 왜 발생 하는 것일 까요? 

단어를 잘 보시면 이유를 알 수 있습니다. 

 

Number 와 관련된 오류 인데... 

Format Exception 이라고 합니다. 즉, 형식 오류라는 의미 인데요. 

풀어서 이야기 하면 숫자 형식 오류 라는 의미가 됩니다. 

 

 

그렇다면 어떤 경우에 발생하는지 예제를 보면서 다시 살펴 보겠습니다.

 

앞서 문자열을 숫자로 변환하는 방법에 대해 정리 했었는데요. (아래 링크 참조)

2018/03/06 - [Java] - [ 자바 코딩 ] Java Integer.parseInt

 

이와 관련하여 잘못된 사용으로 인해 오류가 발생 할 수 있습니다. 

1
2
3
4
5
6
7
8
package com.james.test;
public class JavaNumbers {
    public static void main(String[] args) {
        String str = "O1O";
        System.out.println(Integer.parseInt(str));
    }
}
 
cs

 

위 코드를 보시면 String str = "010"; 이라고 입력 되어 있습니다. 

사실 이 코드는 숫자 010 이 아닌 영문 대문자 O 와 숫자1 의 조합으로 영문 소문자로 사용 시 아래와 같이 표현 할 수 있습니다. 

String str = "o1o";

즉, 숫자 형이 아닌 말 그래로 문자열입니다. 

 

문자열을 숫자형으로 변환한다???

절대 불가능한 일이죠. 

이 경우 위 코드를 실행 시키명 아래와 같은 오류를 볼 수 있습니다. 

 

Exception in thread "main" java.lang.NumberFormatException: For input string: "O1O"

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at com.james.test.JavaNumbers.main(JavaNumbers.java:5)

 
 

이런 오류가 발생 하면 안되 겠지만 발생하는 경우가 있기 때문에 Exception 처리를 해주는 것이 중요 합니다. 

 

그래서 Integer.parseInt() 를 사용할 경우 try ~ catch ~ 를 이용하여 감싸줍니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.james.test;
public class JavaNumbers {
    public static void main(String[] args) {
        try {
            String str = "010";
            System.out.println(Integer.parseInt(str));
        } catch (NumberFormatException e) {
            // NumberFormatException 이 발생한 경우 처리 방법
        } catch (Exception e) {
            // Exception 이 발생한 경우 처리 방법
        }
    }
}
 
cs

 

각각의 Exception 종류에 따라 원하는 코드를 작성하여 처리 하여 주면 됩니다. 

만약 위와 같이 아무런 오류 처리를 하지 않을 경우 오류가 발생하더라도 아무런 반응을 하지 않게 됩니다.

 

위 코드에서는 정상적으로 숫자 010 을 입력 하였습니다. 

문제가 되던 오입력된 숫자형 무자열을 수정 하였으니 제대로 나오겠죠? ^^

 

실행 결과 값은 아래와 같습니다. 

 

10 

 

 

 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,