Java exceptions allow programs to handle and recover from errors and unexpected conditions. There are two main types of exceptions - checked exceptions which must be declared, and unchecked exceptions which do not need to be declared. The try-catch block is used to handle exceptions, with catch blocks specifying code to handle specific exception types. Finally blocks ensure code is always executed after a try-catch block completes. Common built-in exceptions include NullPointerException, ArrayIndexOutOfBoundsException, and ArithmeticException.