throw raises an exception at a specific point in the code, while throws declares in the method signature which exceptions can reach the caller.
throw takes a single exception object, as in throw new IllegalArgumentException("Age cannot be negative"). Execution stops there, and the exception travels up the call stack until a catch block handles it. throws can list several exception types, separated by commas.
A method that can throw a checked exception must either catch it or declare it in throws. For an unchecked exception such as IllegalArgumentException, the throws clause in the example is optional and only documents the behaviour.
public void validateAge(int age) throws IllegalArgumentException {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
}
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 ↓