2012-06-08 14 views
38

क्या जर्सी में वैश्विक अपवाद हैंडलिंग करने का कोई तरीका है? अलग-अलग संसाधनों के बजाय ब्लॉक को पकड़ने/पकड़ने और फिर कुछ विधि को कॉल करने के बाद, जो क्लाइंट को वापस भेजे जाने वाले सभी अपवादों को स्वच्छ करता है, मैं उम्मीद कर रहा था कि संसाधनों को वास्तव में कहां रखा जाए। क्या यह भी संभव है? यदि हां, तो कैसे?जर्सी में ग्लोबल अपवाद हैंडलिंग

बजाय

, जहां sanitize(e) जर्सी सर्वलेट को जर्सी-विन्यस्त अपवाद के कुछ प्रकार फेंक होगा:

@GET 
public Object getStuff() { 
    try { 
     doStuff(); 
    } catch (Exception e) { 
     ExceptionHandler.sanitize(e); 
    } 
} 

होने:

@GET 
public Object getStuff() throws Exception { 
    doStuff(); 
} 

जहां अपवाद कुछ के लिए फेंक दिया जायेगा कि मैं यह कर सकते हैं वहां से sanitize(e) को अवरुद्ध करें और कॉल करें।

यह वास्तव में सभी जर्सी संसाधनों को सरल बनाने और यह गारंटी देने के लिए है कि ग्राहक को वापस आने वाले अपवाद हमेशा कुछ समझने योग्य रूप में होते हैं।

उत्तर

38

हां। जेएक्स-आरएस में अपवाद मैपर की अवधारणा है। प्रतिक्रिया के किसी भी अपवाद को मैप करने के लिए आप अपना खुद का अपवाद मैपर इंटरफ़ेस बना सकते हैं। अधिक जानकारी के लिए देखें: https://jersey.github.io/nonav/documentation/1.12/jax-rs.html#d4e435

+3

यह काम करता है अगर मैं ExceptionMapper तो सभी अपवाद विधि के लिए रूट करने के बनाते हैं। धन्यवाद। – Trisfall

+3

या यहां तक ​​कि 'अपवाद मैपर ', तो आप फेंक दिया 'त्रुटि' भी संभाल सकते हैं। – tsauerwein

3

javax.ws.rs.ext.ExceptionMapper आपका मित्र है।

स्रोत: https://jersey.java.net/documentation/latest/representations.html#d0e6665

उदाहरण:

@Provider 
public class EntityNotFoundMapper implements ExceptionMapper<javax.persistence.EntityNotFoundException> { 
    public Response toResponse(javax.persistence.EntityNotFoundException ex) { 
    return Response.status(404). 
     entity(ex.getMessage()). 
     type("text/plain"). 
     build(); 
    } 
} 
+1

बीटीडब्ल्यू, ऐसा लगता है कि सभी अपवाद 'ExcpetionMapper' के माध्यम से नहीं गए। 'WebAplicationException' को कहीं और संभाला गया था। यह एक समस्या है यदि मैं सभी अपवादों को लॉग करना चाहता हूं, उदाहरण के लिए। –

संबंधित मुद्दे