Have a look at the below code to Load a List 

```
while (dataReader.Read())
            {
                City city;
                if (City.TryLoad(dataReader, out city))
                {
                    defaultCities.Add(city);
                }
            }

```

TryLoad reads the reader and loads the dataobject and returns true when successful and false when unsuccessful. 
The benefit of this, I was told, was that the code would not throw an error if the code fails for some reason when loading the object. So if one row of data is corrupt, then that is not added to the default connection. Moreover, in the try load we can log which particular row threw and error and fix that. 

On the other hand the approach which I followed earlier was simply loading the objects and adding them to the collection. 

```
 while (dataReader.Read())
                {
                    City city = new City();
                    city.Name = reader["Name"].ToString();
                    .
                    .
                    defaultCities.Add(city)

                }

```

While the second approach may fail due to corrupt value in the database, wouldn't you want that? Wont catching bugs due to a missing value become difficult in the first approach?

Just wanted the opinion of others on the pros cons of the two approaches.

Also, please help in tagging the question appropriately.