2010-05-30 11 views
5

मैंने एक जावा क्लास लिखा है, जहां एक विधि अपवाद फेंकता है, तो जावा मेल के माध्यम से, एक ईमेल भेजा जाता है, प्रशासकों को एक रिपोर्ट के साथ।एक अपवाद को हटाए जाने पर एक ईमेल भेजना

यह काम करता है - मेरा प्रश्न w.r.t लालित्य है - मुख्य विधि द्वारा फेंक दिया अपवाद पकड़ने के लिए, sendEmail() विधि मुख्य विधि के कैच ब्लॉक में रहता है। SendEmail() विधि का अपना प्रयास-पकड़ ब्लॉक है।

असल में - यह नीचे जैसा दिखता है - क्या यह लिखने का एक और सुंदर तरीका है?

try { 
    foo; 
} 
catch { 
    try{ 
    sendEmail(); 
    } 
    catch { 
    log(e.message); 
    } 
} 

उत्तर

3

जावा ने नेस्टेड प्रयास/पकड़ ब्लॉक कर सकते हैं।

यदि आप चाहें, तो आप कोशिश/पकड़ प्रेषण ब्लॉक को किसी अन्य विधि में ले जा सकते हैं। जब कोशिश/पकड़ ब्लॉक अधिक जटिल होते हैं, तो यह कोड को समझने में आसान बना देगा।

19

यदि आप कुछ "अधिक सुरुचिपूर्ण" चाहते हैं, तो एक सरल सुझाव है कि sendEmail सहायक विधि पकड़ लें और ईमेल अपवाद लॉग करें। (मैं कल्पना नहीं आप अपवाद का प्रचार करना चाहते हैं ... या कुछ अन्य वसूली करते हैं ...)


हालांकि, वहाँ कुछ कहने के लिए और अधिक महत्वपूर्ण है। आप यहां क्या कार्यान्वित कर रहे हैं त्रुटियों की रिपोर्ट करने के लिए गलत दृष्टिकोण है।

  • कुछ बुरी तरह से अपने आवेदन के साथ गलत बात की संभावना है कि आप एक से अधिक ईमेल पर एक ही समस्या की रिपोर्ट करने, और अधिक, और अधिक के साथ व्यवस्थापक स्पैम जाएगा है हो जाता है ...

  • ईमेल भेजने तक अपने कोड के भीतर गहरे से, आप व्यवस्थापक के लिए अपने एप्लिकेशन की त्रुटि रिपोर्टिंग को एकीकृत करने के लिए कठिन बना रहे हैं।

लॉग 4 जे जैसे जावा लॉगिंग फ्रेम के माध्यम से समस्या की रिपोर्ट करना बेहतर तरीका है। यदि व्यवस्थापक चाहता है कि वह लॉगवॉच, नागियो इत्यादि जैसे किसी प्रकार की निगरानी प्रणाली को कॉन्फ़िगर कर सके। ऐसी निगरानी प्रणाली विभिन्न लॉगर धाराओं में त्रुटियों, विसंगतियों, आदि (जैसे आपके एप्लिकेशन की त्रुटियों) का पता लगाने और वर्गीकृत करेगी, डी उन्हें हटाएं, और यदि व्यवस्थापक इसे कॉन्फ़िगर करता है तो ईमेल, पेजर या जो भी हो, के माध्यम से एक सूचना भेजें।

+1

+1 "लॉगिंग + ऑफलाइन एक्शन" वास्तव में – JoseK

+1

+1 वास्तव में साइट-ऑपरेशंस मॉनिटरिंग (व्यवस्थापक आदि से संपर्क) से एप्लिकेशन कोड को डीकुलल करता है। –

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