Whether you use block codes or you use convolutional codes, there is a limit on what kind of error controls error could be corrected. Some are good for random error correction, some are good for both the error corrections.
Another method for encoding is based on concatenation, where you use two codes both of them could be block code, both of them could be convolutional codes or could be a combination of one or the other, which have got large distance between code words and which can correct both patterns of random errors as well as burst errors.