I can't figure out what i am missing here - I have this code im using to change lead owner to existing account owner if email domain matches a domain field on account. It works fine - however if a lead comes in without an email im getting an error.

Apex trigger leadOwnerAssignEmailTrigger caused an unexpected exception, contact your administrator: leadOwnerAssignEmailTrigger: execution of BeforeInsert caused by: System.NullPointerException: Attempt to de-reference a null object: Class.leadOwnerAssignEmailHandler.updateLeadOwner: line 21, column 1

Line 21 is marked with ** in the code below.

public class leadOwnerAssignEmailHandler {
    public static void updateLeadOwner(List<lead> domainList) {

      set<String> domainSet = new set<string>();

     For (lead l:domainList){
      if(l.email !=null && l.email !='')

      List<Account> accDomainList = [Select Id, OwnerId, domain__c FROM Account 
      WHERE domain__c IN: domainSet];

       Map<String, Id> accountsByDomainMap = new Map<String, Id>();
        if(accDomainList!= null && accDomainList.size()>0) {
            for(Account acc : accDomainList) {
         for(lead l : domainList) {
            **if(accountsByDomainMap != null && 
        accountsByDomainMap.containskey(l.email.split('@').get(1))) {
                l.ownerID = accountsByDomainMap.get(l.email.split('@').get(1));**

1 Answer 1


Issue is here l.email.split('@').get(1) statement. Seems your email is null here.

Add one more condition to check email is not null. This will solve your issue.

You are just trying to split email with @. If there is not @ and how you will get the First string using get(1)

In this case you will get

System.ListException: List index out of bounds: 1 error

This is the cause I can see so far.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .