function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Egor PalatovEgor Palatov 

Custom setting list out of bounds

Hi, how to catch exception with Custom setting list?

Custom setting: NumRecOnPage__c

Custom setting field: Number_records__c

Contoller:

public class ParseCSVController {
    public Blob 							csvFileBody		{get;set;}
	public String 							csvAsString		{get;set;}
	public String[] 						csvFileLines	{get;set;}
	public List<Car_detail__c> 				detailList		{get;set;}
    public List<Car_Detail__c> 				showNow			{get;set;}
	public List<NumRecOnPage__c> 			pageSize		{get;set;} 
    public Map<String,Integer>				mapOfFields		{get;set;}
	public Integer 							resultSize		{get;set;} 
	public Integer 							pageNumber		{get;set;} 
    public Integer 							limitSize		{get;set;}
    public Integer 							counter 		= 	0;
	
	public ParseCSVController(){
        csvFileLines 	= new String[]{};
        showNow 		= new List<Car_Detail__c>();
        detailList 		= new List<Car_detail__c>();
        mapOfFields		= new Map<String,Integer>();       
        pageSize 		= NumRecOnPage__c.getAll().values();        
        limitSize 		= pageSize[0].Number_Records__c.intValue() ;
        resultSize 		= 0;
        pageNumber 		= counter; 
	}
       
    public Boolean getHasNext(){
        if(pageNumber < getNumPages()){
            return true;
        }
        return false;
    }
    
	public boolean getHasPrevious(){
        if(pageNumber>1){
			return true;
        }
		return false;
    }
    
    public void Next(){
        showNow.clear();
        counter+=1;
        pageNumber += 1;      
        integer i0 = counter * limitSize;
        for(integer i = i0 ;i<resultSize;i++){
            if(i<(i0+limitSize)){
                showNow.add(detailList.get(i));
                }else break;
            }
    }
    
	public void Previous(){
        showNow.clear();
        pageNumber = pageNumber-1;
        counter=counter-1;       
        integer i0 = counter * limitSize;      
        for(integer i = i0; i < resultSize; i++){
            if(i < (i0+limitSize)){
                showNow.add(detailList.get(i));
            }else break;
        }
	}
        
	public void Reload(){
        showNow.clear();
        pageNumber = 1;
        counter = 0;
        integer i0 = counter * limitSize;
        for(integer i=i0;i<resultSize;i++){
            if(i<i0+limitSize){
                showNow.add(detailList.get(i));
                }else break;
            }  
	}
    
	public integer getNumPages(){
        integer ost = math.mod(resultSize, limitSize);
        if(ost>0){
        	return resultSize/limitSize+1;
        }
        return resultSize/limitSize;
	}
    
    public void First(){
        counter = 0;
        pageNumber = 1;
        showNow.clear();
        for(integer i=0;i<resultSize;i++){
                if(i<limitSize){
                	showNow.add(detailList.get(i));
                }else break;
		}  
	}
    
	public void Last(){
        counter = getNumPages()-1;
        pageNumber = getNumPages();
        showNow.clear();        
        integer i0 = counter*limitSize;
		for(integer i=i0;i<resultSize;i++){
                if(i<(i0+limitSize)){
                showNow.add(detailList.get(i));
                }else break;
		}  
	}
    
    public integer getCounterValue(){
		return counter;
	}
Dushyant SonwarDushyant Sonwar
public class ParseCSVController {
    public Blob 							csvFileBody		{get;set;}
	public String 							csvAsString		{get;set;}
	public String[] 						csvFileLines	{get;set;}
	public List<Car_detail__c> 				detailList		{get;set;}
    public List<Car_Detail__c> 				showNow			{get;set;}
	public List<NumRecOnPage__c> 			pageSize		{get;set;} 
    public Map<String,Integer>				mapOfFields		{get;set;}
	public Integer 							resultSize		{get;set;} 
	public Integer 							pageNumber		{get;set;} 
    public Integer 							limitSize		{get;set;}
    public Integer 							counter 		= 	0;
	
	public ParseCSVController(){
        csvFileLines 	= new String[]{};
        showNow 		= new List<Car_Detail__c>();
        detailList 		= new List<Car_detail__c>();
        mapOfFields		= new Map<String,Integer>();       
        pageSize 		= NumRecOnPage__c.getAll().values();
        limitSize = 0;
        if(pageSize.size() > 0){
                      limitSize = pageSize[0].Number_Records__c.intValue() ;
        }
        resultSize 		= 0;
        pageNumber 		= counter; 
	}
       
    public Boolean getHasNext(){
        if(pageNumber < getNumPages()){
            return true;
        }
        return false;
    }
    
	public boolean getHasPrevious(){
        if(pageNumber>1){
			return true;
        }
		return false;
    }
    
    public void Next(){
        showNow.clear();
        counter+=1;
        pageNumber += 1;      
        integer i0 = counter * limitSize;
        for(integer i = i0 ;i<resultSize;i++){
            if(i<(i0+limitSize)){
                showNow.add(detailList.get(i));
                }else break;
            }
    }
    
	public void Previous(){
        showNow.clear();
        pageNumber = pageNumber-1;
        counter=counter-1;       
        integer i0 = counter * limitSize;      
        for(integer i = i0; i < resultSize; i++){
            if(i < (i0+limitSize)){
                showNow.add(detailList.get(i));
            }else break;
        }
	}
        
	public void Reload(){
        showNow.clear();
        pageNumber = 1;
        counter = 0;
        integer i0 = counter * limitSize;
        for(integer i=i0;i<resultSize;i++){
            if(i<i0+limitSize){
                showNow.add(detailList.get(i));
                }else break;
            }  
	}
    
	public integer getNumPages(){
        integer ost = math.mod(resultSize, limitSize);
        if(ost>0){
        	return resultSize/limitSize+1;
        }
        return resultSize/limitSize;
	}
    
    public void First(){
        counter = 0;
        pageNumber = 1;
        showNow.clear();
        for(integer i=0;i<resultSize;i++){
                if(i<limitSize){
                	showNow.add(detailList.get(i));
                }else break;
		}  
	}
    
	public void Last(){
        counter = getNumPages()-1;
        pageNumber = getNumPages();
        showNow.clear();        
        integer i0 = counter*limitSize;
		for(integer i=i0;i<resultSize;i++){
                if(i<(i0+limitSize)){
                showNow.add(detailList.get(i));
                }else break;
		}  
	}
    
    public integer getCounterValue(){
		return counter;
	}
Rather than doing error handling , you should look for making your code more robust. After that , the next step is exception handling.
Try with above code.

Hope this helps
 
Egor PalatovEgor Palatov
Hi Dushyant, i tried  your code but there is next error "Script-thrown exception"
Dushyant SonwarDushyant Sonwar
public class ParseCSVController {
    public Blob csvFileBody		{get;set;}
	public String csvAsString		{get;set;}
	public String[]csvFileLines	{get;set;}
	public List<Car_detail__c> detailList		{get;set;}
    public List<Car_Detail__c> showNow			{get;set;}
	public List<NumRecOnPage__c>	pageSize		{get;set;} 
    public Map<String,Integer>mapOfFields		{get;set;}
	public Integer resultSize {get;set;} 
	public Integer pageNumber {get;set;} 
    public Integer limitSize {get;set;}
    public Integer counter= 0;
	
	public ParseCSVController(){
        csvFileLines 	= new String[]{};
        showNow= new List<Car_Detail__c>();
        detailList= new List<Car_detail__c>();
        mapOfFields		= new Map<String,Integer>();       
        pageSize= NumRecOnPage__c.getAll().values();
		limitSize = 0;
		if(pageSize.size() > 0){
			limitSize = pageSize[0].Number_Records__c.intValue() ;
		}
        resultSize= 0;
        pageNumber= counter; 
	}
       
    public Boolean getHasNext(){
        if(pageNumber < getNumPages()){
            return true;
        }
        return false;
    }
    
	public boolean getHasPrevious(){
        if(pageNumber>1){
			return true;
        }
		return false;
    }
    
    public void Next(){
        showNow.clear();
        counter+=1;
        pageNumber += 1;      
        integer i0 = counter * limitSize;
        for(integer i = i0 ;i<resultSize;i++){
            if(i<(i0+limitSize)){
                showNow.add(detailList.get(i));
                }else break;
            }
    }
    
	public void Previous(){
        showNow.clear();
        pageNumber = pageNumber-1;
        counter=counter-1;       
        integer i0 = counter * limitSize;      
        for(integer i = i0; i < resultSize; i++){
            if(i < (i0+limitSize)){
                showNow.add(detailList.get(i));
            }else break;
        }
	}
        
	public void Reload(){
        showNow.clear();
        pageNumber = 1;
        counter = 0;
        integer i0 = counter * limitSize;
        for(integer i=i0;i<resultSize;i++){
            if(i<i0+limitSize){
                showNow.add(detailList.get(i));
                }else break;
            }  
	}
    
	public integer getNumPages(){
        integer ost = math.mod(resultSize, limitSize);
        if(ost>0){
        	return resultSize/limitSize+1;
        }
        return resultSize/limitSize;
	}
    
    public void First(){
        counter = 0;
        pageNumber = 1;
        showNow.clear();
        for(integer i=0;i<resultSize;i++){
                if(i<limitSize){
                	showNow.add(detailList.get(i));
                }else break;
		}  
	}
    
	public void Last(){
        counter = getNumPages()-1;
        pageNumber = getNumPages();
        showNow.clear();        
        integer i0 = counter*limitSize;
		for(integer i=i0;i<resultSize;i++){
                if(i<(i0+limitSize)){
                showNow.add(detailList.get(i));
                }else break;
		}  
	}
    
    public integer getCounterValue(){
		return counter;
	}
}
Try with above code, earlier there was a mistake in copy pasting when posting the code.
Hope this helps :)
 
Egor PalatovEgor Palatov
No, same error
Dushyant SonwarDushyant Sonwar
Hey Egor,

I think this issue might be coming because of null pointer exception.

Try changing this below code block 
if(pageSize.size() > 0){
			limitSize = pageSize[0].Number_Records__c.intValue() ;
		}

to
if(pageSize.size() > 0 && pageSize[0].Number_Records__c != null){
			limitSize = pageSize[0].Number_Records__c.intValue() ;
		}




Your Final output will be like this. Please use below code
public class ParseCSVController {
    public Blob csvFileBody		{get;set;}
	public String csvAsString		{get;set;}
	public String[]csvFileLines	{get;set;}
	public List<Car_detail__c> detailList		{get;set;}
    public List<Car_Detail__c> showNow			{get;set;}
	public List<NumRecOnPage__c>	pageSize		{get;set;} 
    public Map<String,Integer>mapOfFields		{get;set;}
	public Integer resultSize {get;set;} 
	public Integer pageNumber {get;set;} 
    public Integer limitSize {get;set;}
    public Integer counter= 0;
	
	public ParseCSVController(){
        csvFileLines 	= new String[]{};
        showNow= new List<Car_Detail__c>();
        detailList= new List<Car_detail__c>();
        mapOfFields		= new Map<String,Integer>();       
        pageSize= NumRecOnPage__c.getAll().values();
		limitSize = 0;
		if(pageSize.size() > 0 && pageSize[0].Number_Records__c != null){
			limitSize = pageSize[0].Number_Records__c.intValue() ;
		}
        resultSize= 0;
        pageNumber= counter; 
	}
       
    public Boolean getHasNext(){
        if(pageNumber < getNumPages()){
            return true;
        }
        return false;
    }
    
	public boolean getHasPrevious(){
        if(pageNumber>1){
			return true;
        }
		return false;
    }
    
    public void Next(){
        showNow.clear();
        counter+=1;
        pageNumber += 1;      
        integer i0 = counter * limitSize;
        for(integer i = i0 ;i<resultSize;i++){
            if(i<(i0+limitSize)){
                showNow.add(detailList.get(i));
                }else break;
            }
    }
    
	public void Previous(){
        showNow.clear();
        pageNumber = pageNumber-1;
        counter=counter-1;       
        integer i0 = counter * limitSize;      
        for(integer i = i0; i < resultSize; i++){
            if(i < (i0+limitSize)){
                showNow.add(detailList.get(i));
            }else break;
        }
	}
        
	public void Reload(){
        showNow.clear();
        pageNumber = 1;
        counter = 0;
        integer i0 = counter * limitSize;
        for(integer i=i0;i<resultSize;i++){
            if(i<i0+limitSize){
                showNow.add(detailList.get(i));
                }else break;
            }  
	}
    
	public integer getNumPages(){
        integer ost = math.mod(resultSize, limitSize);
        if(ost>0){
        	return resultSize/limitSize+1;
        }
        return resultSize/limitSize;
	}
    
    public void First(){
        counter = 0;
        pageNumber = 1;
        showNow.clear();
        for(integer i=0;i<resultSize;i++){
                if(i<limitSize){
                	showNow.add(detailList.get(i));
                }else break;
		}  
	}
    
	public void Last(){
        counter = getNumPages()-1;
        pageNumber = getNumPages();
        showNow.clear();        
        integer i0 = counter*limitSize;
		for(integer i=i0;i<resultSize;i++){
                if(i<(i0+limitSize)){
                showNow.add(detailList.get(i));
                }else break;
		}  
	}
    
    public integer getCounterValue(){
		return counter;
	}
}