2009-07-07 10 views
1

Jetty kann als Bibliothek verwendet werden, um einen Servlet-Server in Ihre Anwendung einzubetten. Um dies zu tun, erstellen Sie eine Instanz der Klasse Server und starten Sie den Aufruf an einem bestimmten Punkt. Diese Methode löst Exception aus. Eine reine Ausnahme zu fangen oder zu werfen (keine spezialisierte Unterklasse) ist ein schlechter Stil. Weiß jemand, wie ich das vermeiden kann und einen Jetty-Server in meiner Anwendung laufen lasse, ohne diese allgemeine Ausnahme zu behandeln?Wie kann ich die allgemeine Ausnahme vermeiden, die von der Server-Klasse in Jetty ausgelöst wird?

Antwort

4

Catching Exception ist schlechte Praxis , wenn nur Exception geworfen wird. Es gibt keine Problemumgehung dafür. Das Abfangen bestimmter Unterklassen von Exception hat den Nachteil, dass einige von ihnen möglicherweise fehlen.


Was bedeutet es, dass Jetty in Ihrer Anwendung nicht startet? Sie können mehrere Ansätze haben:

auf der Komponentenebene entscheiden, dass Sie

try { 
    server.start(); 
    reportingAvailable = true; 
} catch (Exception e) { 
    log("Jetty failed to start. Reporting will we unavailable", e); 
} 

behandeln es als eine fatale Ausnahme

try { 
    server.start(); 
} catch (Exception e) { 
    throw new RuntimeException("Jetty failed to start", e); 
} 

behandeln es als eine wiederherstellbare Ausnahme proceeed sollte

try { 
    server.start(); 
} catch (Exception e) { 
    throw new JettyFailedToStartException(e); // JettyFailedToStartException !instanceof RuntimeException 
} 
0

Ich würde stark beraten Sie, es irgendwie zu behandeln.

Wenn Jetty nicht gestartet werden kann (z. B. an den angegebenen Port gebunden), werden Sie das irgendwie schaffen wollen. Loggen Sie sich zumindest ein, damit Sie wissen, dass kein Webserver läuft. Vielleicht nach einer Weile wiederholen?

Der Punkt ist, dass Jetty nicht starten kann und Sie sollten sich darum kümmern.