आईडीस्पोजेबल को लागू करते समय, मैंने यह भी कहा कि ऑब्जेक्ट के निपटारे के बाद बुलाए जाने वाले प्रत्येक विधि को ObjectDisposedException
फेंकना चाहिए। लेकिन नाम वस्तु के लिए मानक क्या है जिसे अपवाद के निर्माता को पास किया जाना चाहिए?ऑब्जेक्टनाम के रूप में ऑब्जेक्टनाम को फेंकने पर क्या किया जाना चाहिए?
उत्तर
मेरा मानना है कि सिफारिश की अभ्यास निम्नलिखित फेंकने के लिए है:
throw new ObjectDisposedException(GetType().FullName);
या जांच, प्रत्येक विधि इसकी आवश्यकता है (जाहिर नहीं Dispose
विधि ही) है कि के शीर्ष पर कोड की इन दो पंक्तियों जिनमें शामिल हैं:
if (this.disposed)
throw new ObjectDisposedException(GetType().FullName);
भी प्रयोज्य के लिए एक छोटे से विधि में इस refactor करने के लिए उपयोगी हो सकता है।
मुझे विश्वास नहीं है कि इसके लिए एक मानक है, मैं ऑब्जेक्ट के प्रकार को एक अद्वितीय पहचान क्षेत्र (एक प्रकार की 'प्राथमिक कुंजी') की स्ट्रिंग सामग्री के साथ वापस कर दूंगा।
यहां तक कि .NET Framework स्वयं भी बहुत संगत नहीं है।
[C#]
private void CheckDisposed()
{
throw new ObjectDisposedException(GetType().FullName);
}
:
इस प्रकार के विशिष्ट उपयोग निम्नलिखित की तरह कुछ है:
डेविड एम कीन (माइक्रोसॉफ्ट पर FxCop टीम पर पूर्व डेवलपर) MSDN documentation for the ObjectDisposedException में कोई टिप्पणी जोड़ी
मुझे याद आया। म्यूट दस्तावेज में टिप्पणियों को भी पढ़ना सीखें। – Wilhelm
चिंता न करें, यह अभी चला गया है। –
@ जोनाथन रेनहार्ट: टिप्पणी को पृष्ठ के .NET 4-संस्करण से स्पष्ट रूप से हटा दिया गया था। मैंने ऊपर दिए गए लिंक को ठीक किया है, इसलिए यह .NET 3.5-संस्करण को संदर्भित करता है जिसमें उद्धृत टिप्पणी शामिल है। – Albic
- 1. विजेट का ऑब्जेक्टनाम अपडेट करना स्वचालित रूप से स्टाइल को अपडेट नहीं करता है
- 2. मैमिंग्स पर एक त्रुटि फेंकने पर मैपिंग (E10: \ का पालन किया जाना चाहिए /,? या & 0)
- 3. पूर्णांक को स्पष्ट रूप से कब निर्दिष्ट किया जाना चाहिए?
- 4. क्या DoWork() के "कनेक्शन" तर्क को बंद किया जाना चाहिए?
- 5. क्या एपीएनएस टोकन एन्क्रिप्ट किया जाना चाहिए?
- 6. क्या static_assert को टाइपिफ़ के साथ ट्रिगर किया जाना चाहिए?
- 7. क्या autogen.sh को टैरबॉल में शामिल किया जाना चाहिए?
- 8. अपवाद संदेशों को वैश्विककृत किया जाना चाहिए
- 9. कोबोल को इंडेंट क्यों किया जाना चाहिए?
- 10. क्या यह बग ठीक किया जाना चाहिए?
- 11. PYTHONPATH में वास्तव में क्या सेट किया जाना चाहिए?
- 12. क्या ऑपरेटरों को दोस्तों के रूप में घोषित किया जाना चाहिए?
- 13. ईन्नोएम को कब आवंटित किया जाना चाहिए?
- 14. टोकन को कैसे ताज़ा किया जाना चाहिए
- 15. सिफारिश इंजन बनाने के दौरान क्या विचार किया जाना चाहिए?
- 16. क्या डिस्पोजेबल वस्तुओं को पारित किया जाना चाहिए?
- 17. क्या लॉक वैरिएबल को अस्थिर घोषित किया जाना चाहिए?
- 18. क्या इकाई वस्तुओं को भंडार द्वारा उजागर किया जाना चाहिए?
- 19. क्या ओपन-सोर्स लाइब्रेरी को डिजिटली हस्ताक्षर किया जाना चाहिए
- 20. क्या रेंडरएक्शन फॉर्म के साथ इस्तेमाल किया जाना चाहिए?
- 21. क्या जुनीट परीक्षणों को जवाडोक किया जाना चाहिए?
- 22. क्या मेलटॉ HTML5 में इस्तेमाल किया जाना चाहिए?
- 23. क्या देशी सत्यापन रेल में परीक्षण किया जाना चाहिए?
- 24. जब किसी केस को केस आरेख में एक अभिनेता के रूप में शामिल किया जाना चाहिए?
- 25. क्या नेविगेशन बार हमेशा सूचियों के रूप में लागू किया जाना चाहिए?
- 26. पायथनों को पाइटेबल्स में कैसे संग्रहीत किया जाना चाहिए?
- 27. क्या raise_delivery_errors को एक उत्पादन रेल ऐप में सत्य पर सेट किया जाना चाहिए?
- 28. क्या PHP_EOL ईमेल में उपयोग किया जाना चाहिए?
- 29. हाइबरनेट एंटिटी मैनेजर, क्या इसे सिंगलटन के रूप में इस्तेमाल किया जाना चाहिए?
- 30. इकाई को कॉल करने के लिए प्रबंधित किया जाना चाहिए
इसके अलावा, कृपया इस प्रश्न और सामान्य दिशानिर्देशों के लिए मेरा उत्तर देखें: http://stackoverflow.com/questions/668440/handling-objectdisposedexception-correctly-in-an-idisposable-class-hierarchy – Noldorin