logo

Java의 NumberFormatException

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. } } 

산출:

Java의 NumberFormatException

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 } } }