These three terms describe different stages in the chain that leads from a human mistake to a visible user problem. An Error is the human mistake — it happens in the developer's head, or when they misread a requirement, or make a wrong assumption. The error itself exists before anything is written.