NumberFormatException은 문자열을 부동 소수점 또는 정수와 같은 숫자 값으로 변환하려고 시도하지만 입력 문자열의 형식이 적절하지 않거나 불법일 때 발생합니다. 잘못된 형식이란 문자열을 정수로 구문 분석하려고 하는데 문자열에 부울 값이 포함되어 있으면 형식이 잘못된 것임을 의미합니다. 예를 들어 문자열을 정수로 구문 분석하려고 시도했지만 문자열이 null인 경우입니다.
확인되지 않은 예외입니다. 의 하위 클래스입니다. IllegalArgumentException 그리고 구현 직렬화 가능 상호 작용.
NumberFormatException의 생성자
건설자 | 설명 |
---|---|
번호형식예외() | 이는 지정된 세부 메시지 없이 NumberFormatException을 생성합니다. |
NumberFormatException(문자열 s) | 이는 문자열 s에 상세하게 지정된 메시지를 사용하여 NumberFormatException을 구성합니다. |
NumberFormatException의 예
public class Example { public static void main(String[] args) { int a = Integer.parseInt(null); //throws Exception as //the input string is of illegal format for parsing as it is null. } }
산출:
NumberFormatException의 일반적인 이유
NumberFormatException은 예외를 발생시키는 메소드의 해당 인자에 대한 문자열 형식이 부적절하여 발생하므로 그 발생 방식은 다양할 수 있습니다. 그 중 몇 가지를 다음과 같이 언급합니다.
- 제공된 입력 문자열은 null일 수 있습니다.
예- 정수.parseInt(null); - 입력 문자열이 비어 있을 수 있습니다.
예- Integer.parseInt(''); - 입력 문자열에 후행 공백이 있을 수 있습니다.
예- Integer.parseInt('123'); - 입력 문자열 앞에 공백이 있을 수 있습니다.
예- Integer.parseInt(' 123'); - 입력 문자열은 영숫자일 수 있습니다.
예- Long.parseLong('b2'); - 입력 문자열에 구문 분석된 문자열을 저장하는 데이터 유형의 범위를 초과할 수 있는 입력이 있을 수 있습니다.
예- Integer.parseInt('135'); 정수의 가능한 최대 값은 127일 수 있지만 문자열의 값은 범위를 벗어난 135이므로 예외가 발생합니다. - 입력 문자열과 구문 분석에 사용되는 메서드 유형이 일치하지 않을 수 있습니다. '1.0'과 같은 입력 문자열을 제공하고 이 문자열을 정수 값으로 변환하려고 하면 NumberFormatException 예외가 발생합니다.
예- Integer.parseInt('1..0');
NumberFormatException을 피하는 방법은 무엇입니까?
NumberFormatException은 기본적으로 숫자 값으로 구문 분석하는 동안 입력 문자열의 형식이 올바르지 않거나 불법이기 때문에 발생합니다. 따라서 이 예외를 방지하려면 제공된 입력 문자열의 형식이 올바르게 지정되어야 합니다.
유효하고 형식이 올바른 문자열을 얻으려면 먼저 입력 문자열이 null이 아닌지 확인하십시오. 그런 다음 불필요한 공백을 확인하고 모두 제거한 후 인수 문자열이 문자열 구문 분석에 사용하는 메서드 유형과 일치하는지 확인하기 위해 몇 가지 검사를 수행합니다. 메서드가 ParseInt()인 경우 문자열에 정수 값이 있는지 확인하고 다른 모든 메서드에 대해서도 마찬가지로 필요한 검사를 수행합니다.
Java 프로그램이 NumberFormatException을 생성하는 것을 방지하려면 아래와 같이 try-catch 블록에 이 예외를 발생시킬 수 있는 코드 줄을 포함하는 것이 항상 좋은 습관입니다.
public class NumberFormatExceptionExample { private static final String inputString = '123.33'; public static void main(String[] args) { try { int a = Integer.parseInt(inputString); }catch(NumberFormatException ex){ System.err.println('Invalid string in argumment'); //request for well-formatted string } } }