Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 널 포인터 예외(NullReferenceException) 완벽 이해와 처리 방법

C#의 널 포인터 예외(NullReferenceException)란?

NullReferenceException은 Java 등 다른 언어의 NullPointerException에 해당하는 C#의 대표적인 런타임 예외입니다. 값이 null로 설정된 객체나 변수에 접근하려고 할 때 발생하며, 적절히 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있습니다.

try-catch를 활용한 예외 처리

C#에서는 try-catch 블록을 사용하여 NullReferenceException을 감지하고 처리할 수 있습니다. 아래 예제는 변수를 null로 설정한 후 출력을 시도하여 예외가 발생하고, 이를 catch 블록에서 잡아내는 과정을 보여줍니다.

try {
    string a = null;
    Console.WriteLine(a);
} catch (NullReferenceException ex) {
    Console.WriteLine("변수가 null입니다!");
}

위 코드에서 try 블록 안에서 예외가 발생하면 프로그램 흐름이 즉시 catch 블록으로 이동합니다. 따라서 예외로 인해 프로그램이 중단되는 것을 방지하고, 개발자가 의도한 방식으로 오류 상황을 처리할 수 있습니다.

NullReferenceException의 주요 발생 원인

  • null로 초기화된 객체의 메서드나 속성에 접근하는 경우
  • 배열이나 컬렉션이 초기화되기 전에 요소에 접근하는 경우
  • 메서드 매개변수로 null이 전달된 후 이를 검증 없이 사용하는 경우
  • 객체 반환 메서드가 null을 반환했는데 이를 확인하지 않고 사용하는 경우

예외 방지를 위한 팁

예외 처리만큼 중요한 것은 사전에 예외 발생 자체를 막는 것입니다. 객체를 사용하기 전에 null 여부를 검사하거나, C# 6.0 이상에서 제공하는 null 조건 연산자(?.)를 활용하면 더욱 안전한 코드를 작성할 수 있습니다.

// null 검사를 통한 예방
if (a != null) {
    Console.WriteLine(a);
}

// null 조건 연산자 사용
Console.WriteLine(a?.ToString() ?? "null 값입니다");