tl;dr - Back up your data immediately.
Hard drives are actually notoriously unreliable. There's just a ton of error correction parity information placed on top of the actual data to make them as reliable as they are. It's like trying to write data as mounds on a sand beach, where the sand might collapse, or the wind might blow a mound over, or birds might land and knock a mound over. On a per-mound basis it can't be done reliably. But if you group a bunch of mounds together and use parity coding to have them represent fewer bits than there are mounds, you can statistically make them more reliable. Some mounds may collapse, but the state of the remaining mounds lets you determine what bits were originally coded.
CDs and DVDs work the same way. You can scratch them all up, but the error correction coding restores the original data. Up to a point. When the errors exceed the capability of the error correction coding to recover the data, the sector becomes a bad sector. The drive then tests to see if it was just this one instance of data which became unreadable, or if it's a consistent problem with the sector (maybe the magnetic layer has permanent damage to it - equivalent to scraping off the sand from the beach, so newly written data suffers the same reliability problem).
If it's a temporary problem, the drive puts the sector back in use - hopefully newly written data to the sector will not degrade like the previous data did. If it's a consistent problem, the drive maps the sector out and substitutes a reserve sector (extra unused sectors added to the end of every disk). Every time the drive gets an instruction to read/write from/to that sector, it uses the reserve sector instead.
In that respect, bad sectors are fairly normal, and drives are designed assuming they'll develop a few hundred or thousand bad sectors over their lifetime. It's when the bad sectors develop rapidly that it indicates a bigger problem with the drive. In your case, 300,000 bad sectors indicates a massive problem. I hope you have your data backed up, because with the degradation in that advanced a state, you probably won't be able to read all of your existing data off the drive. If you don't have a backup, make one immediately, starting with your most valuable data first. If the bad sectors are being caused by debris (like the magnetic layer flaking off), the debris will eventually hit areas containing data and scrape that off, causing data loss.