मैं काफी बड़े वेब ऐप को फिर से शुरू करने की प्रक्रिया में हूं। प्रमुख मुद्दों में से एक असंगत त्रुटि हैंडलिंग है और मैं एक समझदार रणनीति के साथ आने की कोशिश कर रहा हूं। मैं एक कस्टम त्रुटि हैंडलर बना लिया है के माध्यम से, set_error_handler कि अनिवार्य रूप में पीएचपी त्रुटियों बदल जाता है ErrorExceptions , और कस्टम आधार अपवाद वर्ग कि सीधे से विरासत में मिली अपवाद ।
उत्पादन पर मैं एक सामान्य अपवाद कैच-ऑल का उपयोग कर रहा हूं, set_exception_handler के माध्यम से , और मैं मिश्रण में अपवाद लॉगिंग * जोड़ने वाला हूं । मेरी दुविधा जहां वास्तविक अपवाद करने के लिए है, आधार अपवाद वर्ग में या कैच-ऑल में।
मैंने इसे पकड़ने के लिए इसे लॉग-इन करने के कुछ कारणों के बारे में सोचा है:
- कोड में काफी कुछ अपवाद हैं जिन्हें आधार अपवाद वर्ग के कुछ उपयुक्त बच्चे में परिवर्तित करने की आवश्यकता है। जब तक ऐसा नहीं होता, तब तक सभी अपवाद लॉग नहीं होंगे।
- यह किसी भी तरह कैच-ऑल में अधिक स्वाभाविक लगता है, एक आधार अपवाद वर्ग केवल ऐसा होने से अधिक नहीं करना चाहिए। (यह एक एकल जिम्मेदारी सिद्धांत की बात हो सकती है, लेकिन यह सिर्फ एक भ्रामक भावना हो सकती है)
और आधार अपवाद वर्ग में लॉग इन करने का एक कारण:
- वर्तमान में कैच-ऑल का उपयोग केवल उत्पादन पर किया जाता है। हमारे अन्य वातावरणों (विकास, परीक्षण) पर इसे पेश करना आसान होगा, लेकिन यह कुछ समायोजन के लिए कॉल करेगा, क्योंकि त्रुटियों को प्रति पर्यावरण भिन्न तरीके से नियंत्रित किया जाता है, क्योंकि उत्पादन पर वे 404/503 त्रुटि पृष्ठों पर अनुवादित होते हैं।
क्या अपवादों को स्वीकार करने के लिए कोई स्वीकार्य अभ्यास है?
* लॉगिंग में पहली बार एक पाठ फ़ाइल में लिखना शामिल होगा, और यह कुछ प्रकार के अपवादों के लिए मेल भेजने के लिए विकसित हो सकता है।
कुछ स्पष्टीकरण, @ unholysampler के जवाब से संकेत मिलता है :
मैं 2 * 10 ^ 6 के स्लोकोड कोडबेस का सामना कर रहा हूं, बहुत सारे थर्ड पार्टी सामान के साथ, जिनका मुझ पर कोई नियंत्रण नहीं है, और कुछ कोड जिनका मेरे पास PHP में पूर्व-तारीखों के अपवादों पर नियंत्रण है। और कुछ भद्दे हालिया कोड भी हैं, हम लंबे समय तक तीव्र दबाव से उबर रहे हैं, जहां हमें वास्तव में सोचना बंद करना पड़ा और बस हैक कर लिया गया।
हम सभी विसंगतियों को दूर करने और एक समझदार त्रुटि से निपटने के दृष्टिकोण को पेश करने के लिए सक्रिय रूप से मना कर रहे हैं, लेकिन इसमें कुछ समय लगने वाला है। जब तक मैं उस बिंदु तक नहीं पहुँच जाता, जहाँ त्रुटियों को उचित तरीके से नियंत्रित किया जाता है, तब तक मुझे और अधिक दिलचस्पी है। मैं शायद किसी बिंदु पर एक समझदार अपवाद की रणनीति पर एक और सवाल पूछूंगा।
लॉगिंग के पीछे मुख्य प्रेरणा मेरे फोन पर एक ईमेल प्राप्त करना है जब भी उत्पादन पर कुछ बुरा होता है। मुझे परवाह नहीं है अगर डेटा डंप बहुत बड़ा हो जाता है, अगर वे करते हैं तो मेरे पास एक क्रॉन जॉब होगा जो हर अब और फिर पुराने को हटा देगा।