An exception is a problem that occurs during program execution. In Java, exceptions are represented by classes that extend the Throwable class and allow programmers to handle exceptions using try/catch blocks. There is a hierarchy of exception classes that reflect different types of errors. Methods can declare that they throw specific exception types, and try/catch blocks allow catching and handling exceptions at runtime.