2012-10-06 10 views
5

एक PHP वेब सिस्टम विकसित करते समय, E_ALL | E_STRICT को त्रुटि_ रिपोर्टिंग और नोटिस त्रुटियों सहित सभी प्रकार की त्रुटियों का ख्याल रखना अच्छा अभ्यास है।रिलीज PHP वेब सिस्टम में किस प्रकार की त्रुटियों को सिस्टम को रोकना चाहिए?

लेकिन जारी प्रणाली में, क्या मुझे त्रुटि नोटिस होने पर सिस्टम को रोकना चाहिए?

या मुझे केवल सिस्टम को रोकना चाहिए जब E_ERROR हुआ और E_WARNING, E_NOTICE, या E_STRICT जैसी अन्य सभी त्रुटियों को अनदेखा कर दिया जाए?

मुझे अपने कस्टम त्रुटि हैंडलर में किस प्रकार की त्रुटियों को संभालना चाहिए और सिस्टम को रोकना (बाहर निकलना) चाहिए?

+2

चेतावनी निश्चित रूप से सिस्टम को रोकना चाहिए (लेकिन मूल त्रुटि/अपवाद हैंडलर को न छोड़ें, अपना खुद का लिखें जो किसी त्रुटि त्रुटि का खुलासा नहीं करता है)। कम त्रुटि स्तर कम निश्चित हैं, लेकिन आपको कम से कम उन्हें लॉग इन करना चाहिए और रिपोर्ट स्वयं को मेल करना चाहिए - जो आपको उन्हें ठीक करने के लिए प्रेरित करेगा :) – DCoder

+0

@DCoder अच्छी सलाह के लिए धन्यवाद! क्या आप मुझे बता सकते हैं कि E_WARNING होने पर आपको सिस्टम को क्यों रोकना चाहिए? –

+1

ज्यादातर मामलों में जहां उच्च उपलब्धता की तुलना में शुद्धता अधिक महत्वपूर्ण है, "तेजी से असफल" "किसी भी चीज़ पर आगे बढ़ने" के लिए बेहतर है। आमतौर पर एक चेतावनी का मतलब है कि कुछ वास्तव में गलत हो गया है और आगे बढ़ने से चीजें बदतर हो जाएंगी। इस साइट पर सबसे आम प्रश्न पर विचार करें - ["mysql_fetch_ पैरामीटर की अपेक्षा करता है ..., बूलियन दिया गया"] (http://stackoverflow.com/search?q=mysql+fetch+boolean+given)। यदि आप अपनी चेतावनी को पहली चेतावनी पर रोक नहीं देते हैं, तो आपको आगे की प्रक्रिया में असफल क्वेरी के परिणामों का उपयोग करके चेतावनियों को दोहराने की एक लंबी सूची और संभवतः अन्य डेटा को गड़बड़ करने जा रहे हैं। आपकी टिप्पणी के लिए – DCoder

उत्तर

4

जब आप कोई कोड विकसित करते हैं तो आपको नोटिस सहित किसी भी चेतावनी का ख्याल रखना चाहिए।

उत्पादन के लिए आपको वास्तव में त्रुटियों पर रोक नहीं देना चाहिए। इसके बजाय आप E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE जैसी किसी भी त्रुटि को प्रबंधित करने के लिए set_error_handler() का उपयोग कर सकते हैं। कस्टम पेज पर क्लाइंट को रीडायरेक्ट करें, किसी भी प्रकार की त्रुटि के लिए कस्टम संदेश प्रदर्शित करें। बिंदु डिफ़ॉल्ट त्रुटि जानकारी छोड़ना नहीं है।

आपके पास हमेशा एक ऐसी प्रणाली होनी चाहिए जो उत्पादन सर्वर पर स्वयं (किसी ई-मेल या ऐसे) के माध्यम से हुई किसी भी त्रुटि की रिपोर्ट करे और जितनी जल्दी हो सके उनका ख्याल रखे।

php.net/set_error_handler पर आपके पास बहुत सारे उदाहरण हैं जो आपके जीवन को बहुत आसान बना देंगे और त्रुटियों और चेतावनियों को ट्रैक करने में आपकी सहायता करेंगे।

+0

धन्यवाद! [php.net/set_error_handler] (http://php.net/set_error_handler) में त्रुटि हैंडलर के सभी उदाहरणों में E_WARNING (E_USER_WARNING नहीं) होने पर 'निकास' को कॉल न करें। क्या आपको लगता है कि उपयोगकर्ताओं को त्रुटि स्क्रीन या संदेश दिखाने की आवश्यकता नहीं है और E_WARNING होने पर सिस्टम को रोकें (बाहर निकलें)? –

+0

यह आपका निर्णय है, चेतावनी को 'निकास' की आवश्यकता नहीं है, वे केवल चेतावनियां हैं (अपरिभाषित अनुक्रमणिका, बहिष्कृत कार्य, आदि ..) –

+0

आपके उत्तर के लिए धन्यवाद! –

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