System NullPointerException Trying To Reference An Object That is Null

How To resolve System.NullPointerException: Attempt to Reference a Null Object Error

The System.NullPointerException: Attempt to dereference a null object is a prevalent error in Apex classes. It arises when a variable (be it an sObject, list, set, or any other data type) hasn’t been initialized or allocated memory. Initializing memory is crucial when utilizing non-primitive data types within the code. Failure to do so might lead to the Attempt to dereference a null object error. This error can manifest in Apex classes, Visualforce pages with Apex controllers, Test classes, and Apex Triggers.

For instance, if I use it in this manner:

Account acc;
acc.Name = 'sfdcpoint';

This will lead to an attempt to dereference a null object error. Instead, it’s advisable to use it in this manner:

Account acc = new Account();
acc.Name = 'sfdcpoint';

Even when employing lists or sets, it’s essential to allocate memory to them, as shown here:

List<Account> accList = new List<Account>();
Set<String> strSet= new Set<String>();

Likewise, this error can arise if we receive a null result from a map and attempt to utilize it within our code. For instance, let’s consider an accountMap where the Id serves as the key and Account represents the value:

Account accRecord = accountIdAccountMap.get(accId);
System.debug('*****accRecord.Name'+accRecord.Name);

The code above may also lead to an error. Within that code snippet, accountIdAccountMap or accRecord could potentially be null. Therefore, it’s crucial to perform a null check before utilizing them, as demonstrated here:

if(accountIdAccountMap != null){
    Account accRecord = accountIdAccountMap.get(accId);
    if(accRecord != null){
        System.debug('*****accRecord.Name'+accRecord.Name);
    }
}

In addition, employing the isEmpty() method is considered a good practice, demonstrated here:

if(!accList.isEmpty()){
     //Do your dml or other operations here
}

For best practices, incorporating exception handling into our code is essential, illustrated as follows:

try{
    //Code here
}catch(Exception e){
    //Handle exception here
}


In the event of a System.NullPointerException, it’s recommended to utilize System.debug to trace the specific line of code causing the error, allowing for resolution.

Moreover, it’s advisable to implement a try-catch block along with an exception handling mechanism to manage any unforeseen errors, as depicted here.