Java에서 Null 포인터 예외 란

Mohammad Irfan 2023년10월12일
  1. Java에서NullPointerException은 무엇입니까?
  2. Java에서NullPointerException클래스 처리
  3. Java에서NullPointerException클래스 처리
  4. Java의 명령 줄 인수에서NullPointerException발생
Java에서 Null 포인터 예외 란

이 튜토리얼에서는 Java 널 포인터 예외와이를 처리하는 방법을 소개합니다. 따라 할 수있는 몇 가지 샘플 프로그램이 포함되어 있습니다.

Java에서 모든 참조 변수의 기본값은 메모리 위치를 가리키는 null 값이지만 관련 값이 없습니다. 프로그래머가이 참조 변수를 사용하여 작업을 수행하려고하면 널 조건으로 인해 널 포인터 예외가 발생합니다.

이 예외가 발생할 수있는 시나리오이지만이 예외는 Java에서 가장 많이 발생합니다. 이로 인해 코드가 중단되고 비정상적인 실행 흐름이 발생합니다. 다음 사항은 Java 코드에서NullPointerException을 발생시킬 수 있습니다.

  • null 개체의 인스턴스 메서드를 호출합니다.
  • null 개체의 필드 수정.
  • 널의 길이를 배열 인 것처럼 처리합니다.

이 예외를 처리하기 위해 Java는java.lang패키지에있는NullPointerException클래스를 제공합니다. catch블록에서이 클래스를 사용하여 예외 유형을 지정한 다음 코드 중단을 피하기 위해 catch 할 수 있습니다.

Java에서NullPointerException은 무엇입니까?

NullPointerException클래스를 이해하는 가장 기본적인 예는string객체를 만든 다음toUpperCase()와 같은 메서드를 적용하여 문자열을 대문자로 변환하는 것입니다. 아래 예제를보고string오브젝트가 비어 있기 때문에 예외가 발생하는 것을 확인하십시오.

public class SimpleTesting {
  static String str;
  public static void main(String[] args) {
    String newStr = str.toUpperCase();
    System.out.println(newStr);
  }
}

출력:

Exception in thread "main" java.lang.NullPointerException

Java에서NullPointerException클래스 처리

예외를 처리하기 위해 Java는 try-catch 블록을 제공합니다. 여기에서 이러한 블록을 사용하여NullPointerException을 포착하고 비정상적인 프로그램 종료를 방지 할 수 있습니다. 아래 예를 확인하십시오.

public class SimpleTesting {
  static String str;
  public static void main(String[] args) {
    try {
      String newStr = str.toUpperCase();
      System.out.println(newStr);
    } catch (NullPointerException e) {
      System.out.println("Null Pointer: " + e.getMessage());
    }
  }
}

출력:

{One=1, Two=2, Three=3}

Java에서NullPointerException클래스 처리

null 참조에 대해 이미 알고있는 경우 작업을 적용하기 전에 if-else 블록을 사용하여 변수의 유효성을 검사 할 수 있습니다. 이 방법은 훌륭한 솔루션이지만 이전에 null 참조를 알고있는 경우에만 작동합니다. 여기에서 코드를 참조하십시오.

public class SimpleTesting {
  static String str;
  public static void main(String[] args) {
    if (str != null) {
      String newStr = str.toUpperCase();
      System.out.println(newStr);
    } else
      System.out.println("String is null");
  }
}

출력:

String is null

Java의 명령 줄 인수에서NullPointerException발생

이것은 널 포인터 예외가 발생할 수있는 또 다른 시나리오입니다. main()메서드의args[]배열에는 명령 줄 인수가 포함되어 있으며 런타임 동안 인수가 제공되지 않으면 null 참조를 가리 킵니다. 길이를 가져 오면NullPointerException이 반환됩니다. 아래 예를 참조하십시오.

public class SimpleTesting {
  static String[] arr;
  public static void main(String[] args) {
    int length = arr.length;
    System.out.println("Array length : " + length);
  }
}

출력:

Exception in thread "main" java.lang.NullPointerException

관련 문장 - Java Exception