Compilers check source code against the language's grammar rules and report violations as syntax errors. These include missing semicolons, unmatched brackets, or incorrect keyword usage. Semantic errors relate to meaning (e.g., type mismatches) and may only be caught by some compilers, while logical errors (bugs) and internal errors are runtime or system issues beyond compilation.