में नहीं पकड़े जाने मेरी Grails सेवा में मैं निम्नलिखित की तरह कोड है:अपवाद सेवा से फेंका नियंत्रक
def createCharge(chargeParams) {
try {
def charge = Charge.create(chargeParams)
} catch (CardException e) {
throw e
}
}
मेरी नियंत्रक से मैं निम्नलिखित है:
try {
service.createCharge(chargeParams)
} catch(CardException e) {
}
लेकिन, मेरा नियंत्रक है कार्ड अपवाद की पुनः फेंकने को पकड़ नहीं। अगर मैं के माध्यम से एक RuntimeException में CardException लपेट:
throw new RuntimeException(e)
और/या हस्ताक्षर बस पकड़ने के लिए (ई) यह लिखे बिना पकड़ से हटा दें, यह काम करता है, लेकिन मैं संदेश की तरह, अपवाद से कुछ जानकारी खोना ।
एक नोट के रूप में, कार्ड अपवाद एक अपवाद है, न कि रनटाइम अपवाद। मुझे यकीन नहीं है कि यह मायने रखता है।
ठीक है, मुझे अपने मामले में अपवादों की जांच की आवश्यकता है क्योंकि कई ऐसे हैं जिन्हें मुझे स्ट्रिप एपीआई से निपटने की ज़रूरत है। मैं एक अलग मार्ग पर जा रहा था क्योंकि मुझे हमेशा एक रनटाइम अपवाद फेंकने की ज़रूरत है ताकि मेरे लेनदेन सही ढंग से रोलबैक हो जाएं। मैं आपके उत्तर को सही के रूप में चिह्नित कर रहा हूं क्योंकि यह मेरे प्रश्न का सही जवाब है। धन्यवाद। – Gregg
आपका स्वागत है। बीटीडब्लू, आप अपने Grails सेवाओं के लिए निम्नलिखित एनोटेशन जोड़कर सभी अपवादों (चेक और अनचेक) के लिए लेन-देन रोलबैक कर सकते हैं '@ ट्रान्सएक्शनल (रोलबैकफॉर = थ्रोबल)' –
टिप के लिए धन्यवाद! वह नहीं जानता था। – Gregg