Oracle riepiloga lo scopo delle eccezioni non controllate come:
The next question might be: "If it's so good to document a method's API, including the exceptions it can throw, why not specify runtime exceptions too?" Runtime exceptions represent problems that are the result of a programming problem, and as such, the API client code cannot reasonably be expected to recover from them or to handle them in any way. Such problems include arithmetic exceptions, such as dividing by zero; pointer exceptions, such as trying to access an object through a null reference; and indexing exceptions, such as attempting to access an array element through an index that is too large or too small.
Ok, le eccezioni non controllate sono per eventuali errori causati dall'errore del programmatore. Sicuro.
Spring documentazione per HttpClientErrorException (che estende RuntimeException) dice che l'eccezione è per:
Exception thrown when an HTTP 4xx is received.
Non riesco a vedere che si tratta di un'eccezione di "errore del programmatore".
Nello scenario che sto testando, sto facendo una query a Spring RestTemplate, ma il server su cui si sta interrogando potrebbe essere inattivo e restituire un 404. Questo sembra uno stato di cose perfettamente normale, non un errore di programmazione .
Forse sto interagendo in modo errato con il Framework di primavera (ad esempio dovrei rilevare 404 prima di usare RestTemplate?) o c'è qualcos'altro che non sto considerando?