Car Rental Optimization
Before answering the question I have a few convention suggestions for you:


Use static instead f abstract when creating static classes.
By the look of your code I assume that your classes are not mean to be used for creating new instances but using abstract to achieve this is ill advised since you can walk around the restriction by creating a class which inherits from this class. Instead use the static keyword to create your static class:

public static class MyStaticClass
{
    //static members here
}

The method total days could be refactored as a property just with a getter method like this:

public int TotalDays =&gt; EndDay - StartDay;

You could also use the Linq method Zip() to join the input lines into the record object


With Zip() you can turn this


var rentalList = new List&lt;RentalRecord&gt;();

for (var i = 0; i &lt; recordCount; i++)
{
    rentalList.Add(new RentalRecord(startDays[i], endDays[i]));
}

return rentalList;



into this:

return startDays.Zip(endDays, (startDay, endDay) 
    =&gt; new RentalRecord(startDay, endDay)); 




Now for your question: 
I suggest validating the content of the file instead of letting it fail without having code explaining why it fail and then throw your own custom exception when the validation method fails. I'd refactor your Load method like this:

public static List&lt;RentalRecord&gt; Load(string path)
{
    int recordCount;
    int[] startDays;
    int[] endDays;
    using (var reader = new StreamReader(path))
    {
        if(!int.TryParse(out recordCount))
        {
            throw new MyInvalidCustomException("Record line is not in the 
            correct format);
        }
        startDays = ConvertStringToIntArray(reader.ReadLine());
        endDays = ConvertStringToIntArray(reader.ReadLine());
        if(startDays.Length != endDays.Length)
        {
            throw new MyInvalidCustomException("not all records have 
            matching start and end days");
        }
    }

    return startDays.Zip(endDays, (startDay, endDay) 
    =&gt; new RentalRecord(startDay, endDay)); 
}


This gives you a more specific exception control so you can troubleshoot the errors better.