Had A l'exception été jeté directement à partir de la méthode de la poignée comme suit:
public RT handle(Object[] params, Throwable e) {
throw new RuntimeException(e);
}
La déclaration de retour n'aurait pas été nécessaire (il aurait même été illégale en fait) parce que le compilateur serait en mesure de savoir que toute déclaration suivant le lancer serait inaccessible. Mais puisque le lancement est effectué dans une autre méthode, et qu'une valeur de retour est requise pour la méthode du handle, un statememt de retour doit être ajouté. Le fait que throwUncheckedException() renvoie quelque chose permet à l'appel d'être dans l'instruction return.
Le throwUncheckedException() doit être quelque chose près de:
public static <T> T throwUncheckedException(Throwable e) {
throw new RuntimeException(e);
return null;
}
à mon humble avis, le fait que ce qui a soulevé votre question montre qu'il est trop déroutante pour être digne. Peut-être une meilleure façon d'atteindre le même objectif serait quelque chose comme ceci:
public RT handle(Object[] params, Throwable e) {
throw Exceptions.makeUncheckedException(e);
}
Donc vous voulez retourner une valeur ** et ** jeter une exception non vérifiée? – Jeremy
Ouais. Lors de l'exécution, une exception est toujours levée, tandis que la valeur de retour est de shush le compilateur. – Yardena