Jetty peut être utilisé comme bibliothèque pour intégrer un serveur servlet dans votre application. Pour ce faire, vous créez une instance de la classe Server et appelez start à un moment donné. Cette méthode jette Exception. Attraper ou lancer une Exception pure (pas une sous-classe spécialisée) est un mauvais style. Est-ce que quelqu'un sait, comment je peux éviter cela et obtenir un serveur Jetty dans mon application en cours d'exécution sans gérer cette exception générale?Comment puis-je éviter l'exception générale lancée par la classe Server dans Jetty?
Répondre
Attraper Exception
est mauvaise pratique à moins que seulement Exception
est levée. Il n'y a pas de solution de contournement pour cela. Attraper des sous-classes distinctes de Exception
a l'inconvénient de manquer éventuellement certains d'entre eux.
Quelle est la signification de Jetty qui ne démarre pas dans votre application? Vous pouvez avoir plusieurs approches:
Décider au niveau des composants que vous devez proceeed
try {
server.start();
reportingAvailable = true;
} catch (Exception e) {
log("Jetty failed to start. Reporting will we unavailable", e);
}
traiter comme une exception fatale
try {
server.start();
} catch (Exception e) {
throw new RuntimeException("Jetty failed to start", e);
}
traiter comme une exception récupérable
try {
server.start();
} catch (Exception e) {
throw new JettyFailedToStartException(e); // JettyFailedToStartException !instanceof RuntimeException
}
Je voudrais fortement vous conseiller de le gérer en quelque sorte.
Si Jetty ne peut pas démarrer (par exemple, se lier à son port désigné), alors vous voudrez gérer cela d'une manière ou d'une autre. À tout le moins, connectez-vous pour savoir que vous n'avez pas de serveur Web en cours d'exécution. Peut-être réessayer après un moment? Le point est que Jetty est incapable de démarrer et que cela devrait vous intéresser.