This document discusses error handling in compilers. It describes different types of errors like lexical errors, syntactic errors, semantic errors, and logical errors. It also discusses various error recovery strategies used by compilers like panic mode recovery, phrase-level recovery, error productions, and global correction. The goals of an error handler are to detect errors quickly, produce meaningful diagnostics, detect subsequent errors after correction, and not slow down compilation. Runtime errors are also discussed along with the challenges in handling them.