Just some technical background. When you erase an EPROM you shine UV light into the photocell of the chip. You can imagine each bit stored on the chip like a little bucket on the surface of that chip. When you shine in UV light it "fills" all of those buckets and sets their value to "1" (eight 1s in a row is Hex value FF).
So a fully "erased" chip has every bucket filled up and every bit set to 1, which will look like "FF" through the whole chip in a Hex Editor.
When you "program" a chip. all it does is selectively "empty" certain buckets. So if a bit should be "1" it ignores it and move to the next bit, if the bit should be "0" it empties the bucket and and then moves to the next one.
Sometimes if I program a chip and it fails verification I'll just program it again without erasing and see if that works. there's no harm in it, maybe some of the buckets didn't get fully emptied.