मैं अपने वेब एप्लिकेशन में एक्लिप्ससेंक का उपयोग कर रहा हूं, और मुझे लगता है कि यह उत्पन्न होने वाले अपवादों को आकर्षक ढंग से पकड़ने और संभालने में कठिन समय है। मैं this thread से एक जैसी समस्या प्रतीत होता हूं, लेकिन मुझे नहीं लगता कि इसे कैसे काम करना है या इसे ठीक करना है।मैं ग्रहण लिंक से बाधा उल्लंघन अपवाद कैसे प्राप्त करूं?
मेरे कोड इस तरह दिखता है:
public void persist(Category category) {
try {
utx.begin();
em.persist(category);
utx.commit();
} catch (RollbackException ex) {
// Log something
} catch (HeuristicMixedException ex) {
// Log something
} catch (HeuristicRollbackException ex) {
// Log something
} catch (SecurityException ex) {
// Log something
} catch (IllegalStateException ex) {
// Log something
} catch (NotSupportedException ex) {
// Log something
} catch (SystemException ex) {
// Log something
}
}
जब जारी रहती है() एक इकाई है कि एक विशिष्टता बाधा का उल्लंघन करता है के साथ कहा जाता है, मैं अपवाद पकड़ लिया और कंटेनर से लॉग इन कर रहे की एक विस्फोट मिलता है।
try {
cc.persist(newCategory);
} catch (PersistenceException eee) {
// Never gets here
System.out.println("MaintCategory.doNewCateogry(): caught: " + eee);
} catch (DatabaseException dbe) {
// Never gets here neither
System.out.println("MaintCategory.doNewCateogry(): caught: " + dbe);
}
मुझे लगता है कि DataBaseException का उपयोग कर पोर्टेबल नहीं है, लेकिन मैं कहीं शुरू करने की आवश्यकता:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504):
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: The statement
was aborted because it would have caused a duplicate key value in a unique or
primary key constraint or unique index identified by 'SQL110911125638570'
defined on 'CATEGORY'.
Error Code: -1
(etc)
मैं निम्नलिखित की कोशिश की है। अपवाद कभी पकड़े नहीं जाते हैं। कोई सुझाव?
"डेटाबेस अपवाद पोर्टेबल नहीं है" का क्या अर्थ है? धन्यवाद! –
@WeishiZeng डेटाबेस अपवाद वर्ग को org.eclipse द्वारा परिभाषित किया गया है, जेपीए विनिर्देश नहीं। तो यह संभवतः एक और जेपीए प्रदाता के साथ काम नहीं करेगा (या यहां तक कि संकलित)। – AlanObject