Une exception personnalisée est une classe qui étend Exception (vérifiée) ou RuntimeException (non vérifiée) pour exprimer une erreur métier précise, comme SoldeInsuffisantException. Elle porte un message utile et, si besoin, la cause d'origine (super(message, cause)).
Exemple
class SoldeInsuffisantException extends RuntimeException {
SoldeInsuffisantException(String m) { super(m); }
}