Exceptions occur when errors arise in a program's execution. The try statement allows code to be executed safely by catching exceptions in catch blocks. There are different exception classes for specific error types. Finally blocks ensure code is always executed after a try block completes, regardless of exceptions. Programs can also manually throw exceptions using throw statements to signal errors.