क्या कोड में कहीं भी फेंकने वाले एक्सपेक्शन को पकड़ने के लिए वैसे भी है? मैं अपवादों को पकड़ना चाहता हूं और प्रत्येक कार्यक्षमता के लिए प्रयास ब्लॉक को लिखने के बजाय उन्हें समान तरीके से संभालना चाहता हूं।विंडोज़ फॉर्म में अनुप्रयोग अपवादों को पकड़ें
उत्तर
Windows अनुप्रयोग फॉर्म्स में, जब एक अपवाद (अतुल्यकालिक कॉल मुख्य थ्रेड पर या के दौरान) आवेदन में कहीं भी फेंक दिया जाता है की सदस्यता ले सकते हैं, तो आप उस पर ThreadException घटना के लिए पंजीकरण करके पकड़ कर सकते हैं आवेदन। इस तरह आप सभी अपवादों को उसी तरह से इलाज कर सकते हैं।
Application.ThreadException += new ThreadExceptionEventHandler(MyCommonExceptionHandlingMethod)
private static void MyCommonExceptionHandlingMethod(object sender, ThreadExceptionEventArgs t)
{
//Exception handling...
}
बस अगर यह किसी की मदद कर सकता है। एप्लिकेशन (एप्लिकेशन.रुन (...);) चलाने से पहले कृपया ईवेंट हैंडलर (Application.ThreadException + = ...) पर पंजीकरण करना सुनिश्चित करें। अन्यथा, यह काम नहीं करेगा (जैसा कि यह मेरे साथ हुआ) –
यह सवाल का जवाब देता है, लेकिन ब्रायन डिशॉ का लिंक उनके उत्तर में बहुत व्यापक है, और इसमें सभी (अगर अधिकतर नहीं) कवर किए गए मामलों का उपयोग करते हैं।एकमात्र चीज जो उत्पादन एप में उपयोगी नहीं है, वह त्रुटि संदेश के साथ संवाद लौटने की विधि होगी। एक वास्तविक उत्पादन ऐप आपके एप्लिकेशन में एक संवाद पॉप अप करने के बजाय इवेंट लॉग को भेजेगा। – MacGyver
स्पष्ट उत्तर आपके निष्पादन श्रृंखला के शीर्ष पर एक अपवाद हैंडलर रखना है।
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new YourTopLevelForm());
}
catch
{
//Some last resort handler unware of the context of the actual exception
}
}
यह आपके मुख्य जीयूआई थ्रेड पर होने वाले किसी भी अपवाद को पकड़ लेगा। यदि आप सभी धागे पर होने वाले अपवादों को वैश्विक रूप से पकड़ना चाहते हैं तो आप AppDomain.UnhandledException ईवेंट की सदस्यता ले सकते हैं और वहां संभाल सकते हैं।
Application.ThreadException +=
new ThreadExceptionEventHandler(MyCommonExceptionHandlingMethod)
private static void MyCommonExceptionHandlingMethod(
object sender,
ThreadExceptionEventArgs t)
{
//Exception handling...
}
कोड से Charith J's answer
अब सलाह के लिए परकी नकल की ...
ये विकल्प केवल एक अंतिम उपाय के रूप में, कहते हैं इस्तेमाल किया जाना चाहिए, अगर आप गलती से ध्यान में न आया अपवादों को दबाने के लिए चाहते हैं प्रस्तुति से उपयोगकर्ता तक। जब भी आप अपवाद के संदर्भ के बारे में कुछ जानते हैं, तो आपको जल्द से जल्द पकड़ना चाहिए। इससे भी बेहतर, आप समस्या के बारे में कुछ करने में सक्षम हो सकते हैं।
संरचित अपवाद हैंडलिंग एक अनावश्यक ओवरहेड की तरह लग सकता है जो आप सभी को पकड़ने के साथ काम कर सकते हैं, लेकिन यह अस्तित्व में है क्योंकि यह मामला नहीं है। और भी, यह काम कोड के रूप में किया जाना चाहिए, जब डेवलपर के दिमाग में तर्क ताजा है। आलसी मत बनो और बाद में या कुछ और प्रोफेसरियल डेवलपर के लिए यह काम लेने के लिए छोड़ दें।
क्षमा करें यदि आप पहले से ही जानते हैं और ऐसा करते हैं।
AppDomain.UnhandledException
और Application.ThreadException
देखें।
मुझे लगता है कि यह एक करीबी है क्योंकि आप जीत फॉर्म आवेदन के भीतर जो खोज रहे हैं उसे प्राप्त कर सकते हैं।
http://msdn.microsoft.com/en-us/library/ms157905.aspx
// Add the event handler for handling UI thread exceptions to the event.
Application.ThreadException += new ThreadExceptionEventHandler(ErrorHandlerForm.Form1_UIThreadException);
// Set the unhandled exception mode to force all Windows Forms errors to go through
// our handler.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
// Add the event handler for handling non-UI thread exceptions to the event.
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
इन चरणों का आप कुछ अपवाद होने के जोखिम को चलाने के सब करने के बिना बिना क्रिया मिलता है।
यह मेरा मुख्य पाश है (मेरा ऐप छुपा हुआ है, स्टेटसबार आइकन के साथ)। आपके कोड के साथ, मुझे अभी भी 'नया फॉर्म 1(); एप्लिकेशन.रुन();' कोशिश/पकड़ के अंदर लपेटने की जरूरत है ... – doekman
- 1. अपवादों को कैसे पकड़ें
- 2. आईफ़्रेम अपवादों को पकड़ें
- 3. सबसे व्युत्पन्न अपवादों को पकड़ें?
- 4. jQuery: एजेक्स अपवादों को पकड़ें
- 5. SQLServer टाइमआउट अपवादों को कैसे पकड़ें
- 6. एक WPF अनुप्रयोग में एक विंडोज़ फॉर्म एम्बेड करना
- 7. विंडोज़ फॉर्म
- 8. विंडोज़ फॉर्म ऐप में फ्लिकरिंग
- 9. विंडोज़ फॉर्म में सामग्री बदलें
- 10. अन्य अनुप्रयोग विंडोज़
- 11. विंडोज़ .NET अनुप्रयोग
- 12. विंडोज़ .NET अनुप्रयोग
- 13. एक विंडोज़ अनुप्रयोग
- 14. विंडोज़ अनुप्रयोग बनाम वेब अनुप्रयोग विकास
- 15. jQuery को पास किए गए कॉलबैक में फेंकने वाले अपवादों को कैसे पकड़ें?
- 16. वाक्यविन्यास अपवाद को कैसे पकड़ें
- 17. विंडोज़ सेवाओं के साथ एक ही प्रक्रिया में विंडोज़ फॉर्म
- 18. गतिशील रूप से C# विंडोज़ अनुप्रयोग
- 19. Symfony2 नियंत्रक कार्रवाई में उत्पन्न होने वाले सभी अपवादों को कैसे पकड़ें?
- 20. भाषा एक विंडोज़ अनुप्रयोग है
- 21. स्वचालित अद्यतन एक विंडोज़ अनुप्रयोग
- 22. विंडोज़ फॉर्म में होस्ट आईडीस्क बैंड
- 23. विंडोज़ फॉर्म में एंटर दबाकर सबमिट करें
- 24. विंडोज़ फॉर्म में माउसओवर पर प्रदर्शित छवि?
- 25. विंडोज़ फॉर्म में एचटीएमएल ईमेल संपादक
- 26. एक WPF अनुप्रयोग में एक कस्टम विंडोज़ फॉर्म नियंत्रण कैसे रखें?
- 27. विंडोज़ फॉर्म (सी # .net) ऐप
- 28. उपयोगकर्ता नियंत्रण क्लिक - विंडोज़ फॉर्म
- 29. सी # में विंडोज़ फॉर्म को कैसे डॉक करें?
- 30. सी # विंडोज़ फॉर्म में खींचे गए सर्कल को कैसे हटाएं?
यह ऐसा कुछ नहीं है जिसे आप स्थानीय रूप से संभालने के बजाय करना चाहते हैं लेकिन जोड़ में। जवाब दे सकते हैं। – Jodrell