Pour ce qui est de lever une exception sans avoir à la déclarer :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public final class ExceptionThrower{
private ExceptionThrower(){}
/**
*
* @param ex
*/
public static void throwException(final Throwable ex){
ExceptionThrower.<RuntimeException>throwsUnchecked(ex);
}
/**
*
* @param toThrow
* @throws T
*/
@SuppressWarnings("unchecked")
private static <T extends Throwable> void throwsUnchecked(final Throwable toThrow) throws T {
throw (T) toThrow;
}
} |
et donc au lieu de
throw new ErreurApiException();
ExceptionThrower.throwException(new ErreurApiException());
à vos risques et périls, cela va sans dire.
Quant à l'idée que "la gestion des erreurs est mal conçue et l'API peut retourner un code HTTP 200 avec des données tel que ..." c'est votre façon de voir…
d'autres pourraient considérer que les erreurs business sont une réponse valide comme une autre et doivent être interprétées par le client
et que seules les erreurs de fonctionnement de /communication avec doivent être retournées avec un code HTTP d'erreur.
Partager