Punching a hole in a floppy is a pretty severe error, but it could be recoverable if the data was recorded redundantly in distant physical locations. Redundancy is a simple brute-force way of guarding against data loss, but then just having multiple physical copies works just as well, and allows storage in separate locations.
Maybe what you saw was a single-medium variation on RAID5 (an array of five drives, four recording data and the fifth recording an error-correcting code). There might've been a few tracks recording the ECCs from the data on the rest of the disk, and recombining the corresponding ECC would allow recovery of the lost data.
More commonly, data on disks, RAM, and transmitted includes an error correcting code for each block of data that allows for error detection and correction of the loss of a few bits in each block. There are many codes, but CRC32 (32-bit cyclical redundancy check) is in common use on disk drives and allows recovering from the loss of 1 or 2 bits of data, and detection of larger errors (every ECC is also an error detecting code, by definition).
Since each block of data has its own ECC, it's possible to recover from multiple hits on a storage medium, as long as each block loses only a small number of bits. CD/CDROMs have a code that's resistant to scratches because a long thin scratch damages lots of sectors but each one is individually recoverable.
To tell you the truth, the math behind the various error correcting codes is a bit over my head, and I'm just describing the practical applications of them. There is (of course) a Wikipedia article that provides an overview and links to lots of detail. That article seems a bit disorganized and confused even to my somewhat ignorant eye, so like always consider it just an overview.
Off Topic » in reply to re: One last thought
error correcting codes
