It is not possible to correct 'all' error bits, as then you would not have to transmit or store any information. The point of error correcting codes is to control the error rate. Let's say you have a medium with an error rate of 1 error in 1000 bits. With forward error correction of some sort, you can lower the error rate to 1 in 1000000 or better at the expense of some overhead for the coding. However, the code you use well only be able to correct errors under certain circumstances. Say, up to two bad bits per code word. However, you can calculate the probability of getting more than two errors per code word, a situation that will produce an error despite the code, and this becomes the new error rate.