Tento typ chyby se objeví ve fázi sémantické analýzy. Tyto typy chyb jsou detekovány v době kompilace.
Většina chyb při kompilaci je chyba rozsahu a deklarace. Například: nedeklarované nebo vícenásobné deklarované identifikátory. Neshoda typu je další chyba při kompilaci.
Sémantická chyba může vzniknout použitím nesprávné proměnné nebo použitím nesprávného operátoru nebo provedením operace ve špatném pořadí.
Určitá sémantická chyba může být:
- Nekompatibilní typy operandů
- Nedeklarovaná proměnná
- Neshoda skutečného argumentu s formálním argumentem
Příklad 1: Použití neinicializované proměnné:
int i; void f (int m) { m=t; }
V tomto kódu t není deklarováno, proto ukazuje sémantickou chybu.
Příklad 2: Nekompatibilita typu:
int a = 'hello'; // the types String and int are not compatible
Příklad 3: Chyby ve výrazech:
String s = '...'; int a = 5 - s; // the - operator does not support arguments of type String