2009-07-07 11 views
1

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

4

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 
} 
0

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.