반응형
자바(Java)에서 발생하는 NumberFormatException 예외에 대해서 알아보겠다.
✅ 예외(Exception) ? 오류(Error) ?
: 프로그램 실행 중에 예상 가능한 상황에서 발생하는 문제로 예외 처리를 통해 프로그램의 안전성을 유지할 수 있다.
오류는 예상하지 못한 상황에서 발생하는 심각한 문제로 일반적으로 오류가 발생하면 프로그램이 중단된다.
해당 예외는 "숫자로 변환할 수 없는 문자열이 입력된 경우"에 발생한다.
보통 숫자로 변환할 수 없는 문자열이 입력되면 parseInt(), parseLong() 등과 같은 숫자 변환 메서드에서 NumberFormatException 예외를 발생시킨다.
NumberFormatException 예외가 발생하는 원인
1. 숫자로 변환할 수 없는 문자열이 입력된 경우
public class Main {
public static void main(String[] args) {
String tmp = "1000A";
System.out.println(Integer.parseInt(tmp));
}
}
tmp 변수에 "A"가 포함되어 있기 때문에 NumberFormatException이 발생한다. 해당 문자를 제거하고 실행시키면 정상 작동하는 것을 확인할 수 있다.
2. 변환하고자하는 자료형의 표현 범위를 넘어설 경우
public class Main {
public static void main(String[] args) {
String tmp = "2147483648";
System.out.println(Integer.parseInt(tmp));
}
}
int형의 범위는 -2,147,483,648 ~ 2,147,483,647다. 해당 범위를 넘어서는 경우 NumberFormatException이 발생한다.
정수형 타입 | 활당되는 메모리 크기 | 데이터 표현 범위 |
byte | 1바이트 | -128 ~ 127 |
short | 2바이트 | -32,768 ~ 32,767 |
int | 4바이트 | -2,147,483,648 ~ 2,147,483,647 |
long | 8바이트 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
3. null 값을 변환하려고 할 경우
public class Main {
public static void main(String[] args) {
String tmp = null;
System.out.println(Integer.parseInt(tmp));
}
}
4. 공백이 포함되어있을 경우
public class Main {
public static void main(String[] args) {
String tmp = "111 ";
System.out.println(Integer.parseInt(tmp));
}
}
NumberFormatException 예외 처리
try-catch문을 이용해서 NumberFormatException 예외를 해결할 수 있다.
catch문에 해당 예외가 발생하면 원하는 액션을 작성해 주면 된다.
public class Main {
public static void main(String[] args) {
try {
String tmp = "111 ";
System.out.println(Integer.parseInt(tmp));
} catch (NumberFormatException e) {
System.out.println("-- 에러 발생 --");
}
}
}
// -- 에러 발생 --
반응형
'개발 & 데이터베이스 > JAVA' 카테고리의 다른 글
이클립스 실행 시 에러 The default workspace is in use or cannot be create, please choose a different on. 해결 방법 (0) | 2023.04.25 |
---|---|
자바 지역변수, 전역변수, 정적(static) 변수의 차이점 (Java 8 이후의 JVM 구조) (0) | 2023.04.24 |
이클립스 오류 svn:E160024 Some of selected resources where not commited. (0) | 2023.03.28 |
자바 Scanner vs BufferedReader 차이점 (0) | 2023.03.26 |
자바 카운팅 정렬 Counting Sort 계수 정렬 완벽 이해하기 (1) | 2023.03.16 |