Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 NumberFormatException(선택되지 않음)을 처리하는 방법은 무엇입니까?


NumberFormatException 선택되지 않음입니다. 예외 parseXXX()에 의해 발생 포맷할 수 없는 경우의 방법 (변환) 문자열을 숫자로 .

NumberFormatException 많은 메서드/생성자가 던질 수 있습니다. java.lang 클래스에서 패키지. 다음은 그 중 일부입니다.

  • public static int parseInt(String s)에서 NumberFormatException 발생
  • 공개 정적 바이트 valueOf(String s)에서 NumberFormatException 발생
  • 공개 정적 바이트 parseByte(String s)에서 NumberFormatException 발생
  • 공개 정적 바이트 parseByte(String s, int radix)에서 NumberFormatException 발생
  • public Integer(String s)에서 NumberFormatException 발생
  • public Byte(String s)에서 NumberFormatException 발생

NumberFormatException을 던질 수 있는 각 메소드에 대해 정의된 상황이 있습니다. . 예를 들어, public static int parseInt(String s)는 NumberFormatException을 발생시킵니다. 언제

  • 문자열 s가 null이거나 s의 길이가 0입니다.
  • 문자열에 숫자가 아닌 문자가 포함된 경우
  • String 값이 정수를 나타내지 않습니다.

예시 1

public class NumberFormatExceptionTest {
   public static void main(String[] args){
      int x = Integer.parseInt("30k");
      System.out.println(x);
   }
}

출력

Exception in thread "main" java.lang.NumberFormatException: For input string: "30k"
       at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
       at java.lang.Integer.parseInt(Integer.java:580)
       at java.lang.Integer.parseInt(Integer.java:615)
       at NumberFormatExceptionTest.main(NumberFormatExceptionTest.java:3)


NumberFormatException 처리 방법

NumberFormatException 을 처리할 수 있습니다. 두 가지 방법으로

  • NumberFormatException을 유발할 수 있는 코드 주변에 try 및 catch 블록 사용 .
  • ) 예외를 처리하는 또 다른 방법은 throws를 사용하는 것입니다. 키워드.

예시 2

public class NumberFormatExceptionHandlingTest {
   public static void main(String[] args) {
      try {
         new NumberFormatExceptionHandlingTest().intParsingMethod();
      } catch (NumberFormatException e) {
         System.out.println("We can catch the NumberFormatException");
      }
   }
   public void intParsingMethod() throws NumberFormatException{
      int x = Integer.parseInt("30k");
      System.out.println(x);
   }
}

위의 예에서 intParsingMethod() 메서드는 Integer.parseInt("30k") 에 의해 throw된 예외 개체를 throw합니다. main() 호출 메소드에 이 경우 방법입니다.

출력

We can catch the NumberFormatException