स्प्रिंग के @Async
एनोटेशन का उपयोग करते समय, विधि के throws
खंड में अपवादों (चेक) अपवादों की बात आती है, तो अवशोषण कमजोर होता है। कंपाइलर कॉलर को अपवाद को संभालने के लिए मजबूर करेगा, लेकिन वास्तविकता में कॉलर को @Async
विधि द्वारा फेंकने वाले अपवाद कभी नहीं दिखाई देंगे। इसके बजाय, कार्यान्वयन के आधार पर, इसे & को वसंत द्वारा लॉग किया जाएगा, या उपयोगकर्ता द्वारा कॉन्फ़िगर किए गए अपवाद हैंडलर को दिया जाएगा, या Future#get()
को वापसी मान पर कॉल किया जाता है।स्प्रिंग @ एसिंक एब्स्ट्रक्शन अपवाद हैंडलिंग
इसलिए, मैं राय बना रहा हूं कि @Async
विधियों को एक नियम के रूप में, कभी भी अपवादों को फेंकना नहीं चाहिए। इसके बजाय, उन्हें सभी चेक अपवादों को RuntimeException
के प्रकारों में लपेटना चाहिए ताकि throws
खंड मौजूद न हो।
क्या यह एक सटीक मूल्यांकन है? क्या कोई उपकरण या प्रोग्रामिंग दृष्टिकोण है जो रिसाव को ठीक करता है? क्या किसी को यह पता चल जाता है कि वसंत डेवलपर्स इस बारे में क्या सोचते हैं, या यदि स्थिति में सुधार करने की कोई योजना है? धन्यवाद!
संभवतः संबंधित: Spring Async method hides exceptions
सामान्य शब्दों में, वसंत अनियंत्रित अपवाद (स्प्रिंग डाटा में अपवाद अनुवाद को देखो) पसंद है, और यह एक के लिए संभव वास्तव में नहीं है कुछ भी फेंकने के लिए async विधि (यही कारण है कि 'भविष्य' अपवाद अपवाद)। – chrylis
असली समस्या तब शुरू होती है जब आपकी @ Asynced विधि कोई मान वापस नहीं करती है। कुछ दिलचस्प चीजें तब होती हैं;) –
विशेष रूप से दिलचस्प चीजें, आर 4 जे? – Jukka