Checked exceptions must be caught or declared with throws, and the compiler enforces this. Unchecked exceptions need neither, so handling them is optional.
Checked exceptions extend Exception but not RuntimeException. They model failures a caller can expect and recover from, such as IOException, SQLException and ClassNotFoundException. Unchecked exceptions extend RuntimeException or Error. They usually signal bugs, such as NullPointerException, ArrayIndexOutOfBoundsException and IllegalArgumentException.
Use a checked exception when the caller can do something useful about the failure. Use an unchecked one for programming errors, where forcing every caller to catch it only adds noise.
// Checked exception - must handle
public void readFile() throws IOException {
FileReader file = new FileReader("file.txt");
}
// Unchecked exception - optional handling
public void divide(int a, int b) {
int result = a / b; // May throw ArithmeticException
}
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓