में किसी भी प्रक्रिया के लिए System.Windows.Forms.Application.ThreadException के समतुल्य:कंसोल आवेदन या खिड़कियों सेवा या WinForms मैं उपयोग में सामान्य
- System.Windows.Forms.Application.ThreadException
- प्रणाली। विंडोज़.एप्लिकेशंस। अनहैंडेड एक्सेप्शन
गैर-विनफॉर्म बहु-थ्रेडेड एप्लिकेशन के लिए मुझे क्या उपयोग करना चाहिए?
सी # .NET 4.0 में नीचे पूरा कोड पर विचार करें: stackoverflow पर इसी तरह के सवाल का
using System;
using System.Threading.Tasks;
namespace ExceptionFun
{
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Task.Factory.StartNew(() =>
{
throw new Exception("Oops, someone forgot to add a try/catch block");
});
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//never executed
Console.WriteLine("Logging fatal error");
}
}
}
मैंने देखा है टन, लेकिन कोई भी एक संतोषजनक जवाब निहित। अधिकांश उत्तर प्रकार के होते हैं: "आपको अपने कोड में उचित निष्पादन हैंडलिंग शामिल करना चाहिए" या "AppDomain.CurrentDomain.UnhandledException का उपयोग करें"।
संपादित करें: ऐसा लगता है मेरे सवाल का गलत समझा गया था, इसलिए मैं इसे पुनर्निर्मित और एक छोटे कोड उदाहरण प्रदान की है।
यह http://stackoverflow.com/questions/3133199/net-global-exception-handler-in-console-application – Jodrell
का डुप्लिकेट की तरह दिखता है आम तौर पर लॉग अप करने के लिए वैश्विक अपवाद हैंडलर का उपयोग किया जाना चाहिए। यदि आप अपवाद के बारे में कुछ समझदार हैं तो आपको स्थानीय रूप से संभालना चाहिए। – Jodrell
यह ठीक काम करना चाहिए। बेशक आप कोशिश/पकड़ का उपयोग नहीं करना चाहते हैं, जो अनचाहे एक्सेप्शन ईवेंट हैंडलर को चलने से रोकता है। आपको स्वयं डाई() की देखभाल करने की ज़रूरत नहीं है, यह स्वचालित है। –