Since you asked a reference, the early access pre-edit version of a paper that addresses exactly this problem you're considering just appeared in the IEEE Transactions on Information Theory:

[K. A. S. Abdel-Ghaffar, J. H. Weber, Parity-check matrices separating erasures from errors, *IEEE Trans. Inf. Theory*, in press.][1]

The word "practical" can imply way too many things and doesn't only apply to considering both errors and erasures. But if we restrict ourselves to the special meaning you used, the introduction of the above paper explains the problem very well.

Here are the two general approaches to handling a combination of errors and erasures that are applicable to any code:

1. you temporarily treat the erasures as errors by assigning a random alphabet, decode normally with different assignments, and compare the results (i.e., what Jyrki explained) or
2. you ignore the positions suffering erasures for the moment, correct errors in the received message by using the corresponding punctured code of the original code, and correct erasures normally at the last step.

The paper considers linear codes and explains how to turn your parity-check matrix into a new one suitable for the second approach without changing the basic code parameters such as the minimum distance.

Reading the first section of the paper will give you a good answer to your specific question in terms of the approach Jyrki explained (and provides a reference to the specific decoding algorithm for Reed-Solomon codes Jyrki mentioned). And learning about the other approach will complement your knowledge on this problem.

In any case, basically you can use a good linear code to handle a channel that may produce both errors and erasures in some way or another with pretty much the same idea as the standard error correction method because you can take advantage of the minimum distance regardless of whether you're dealing with errors or erasures.

A little more formally, let $d$ and $e$ be the minimum distance of a code of your choice and the number of erasures in a received message respectively. Assume that $e' < d$. Then there exists a pair of nonnegative integers $e'$, $r$ satisfying $e+2e'+r < d$ such that if the number of errors does not exceed $e'$, then all errors and erasures can be corrected. The situation is similar for error detection. (The paper refers to [R. M. Roth, *Introduction to Coding Theory.* Cambridge, UK: Cambridge University Press, 2006][2] for this fact if you would like a textbook.)

So, the question is not really which code you should use. It's about which decoding algorithm is good for this type of channel.

With that said, strictly speaking, it does matter which code you use because excellent decoding algorithms are often applicable only to limited classes of codes. But all else being equal, what makes a code suitable for your purpose is the existence of practical encoding/decoding algorithms that work for your code. The correction capability in an ideal situation are already determined by the minimum distance alone.


  [1]: http://dx.doi.org/10.1109/TIT.2013.2245939
  [2]: http://www.amazon.com/Introduction-Coding-Theory-Ron-Roth/dp/0521845041