Le code suivant est-il considéré comme une mauvaise pratique? Pensez-vous que cela peut être fait autrement? L'objectif est de toujours mettre à jour le statut, que ce soit avec succès (c.-à-invocation à service.invoke (id), retourne normalement) ou à l'échec ...Est-ce une mauvaise pratique?
@Autowired
private Service service;
public void onMessage(Message message) {
String id = null;
String status = "FAILED";
try {
id = ((TextMessage) message).getText();
status = service.invoke(id); //can throw unchecked exception
} catch (final JMSException e) {
throw new RuntimeException(e);
} finally {
if (StringUtils.isNumeric(id)) {
service.update(id, status);
}
}
}
Mettez ce code de mise à jour 'default', dans votre' catch' et une fois terminé, lancez votre exception. Évitez la clause 'finally'. – SudoRahul
@JustinYang que voulez-vous dire exactement? Le 'finally' sera appelé _after_ le' try'. Que voulez-vous dire par "avaler"? –
@ bmorris591 a raison. Le 'throw' arrivera toujours après l'exécution du bloc' finally'. Il serait avalé si le 'enfin' a également jeté une exception. –