.Net下Unhandled Exception的捕获

C# 处理unhandled Exception方式如下:
1.    在程序的Main()方法中增加如下代码。
      //处理线程未处理的异常
   Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
   //处理系统未处理的异常
   AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
      //运行程序
   Application.Run(new frmServerMain());
   
2.    方法:
        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            string str = "";
            Exception error = e.Exception as Exception;
            if (error != null)
            {
                str = string.Format("Application unhandled exception.\nExceptionType:{0}\nException Message: {1}\n StackTrace:{2}\n",
                     error.GetType().Name, error.Message, error.StackTrace);
            }
            else
            {
                str = string.Format("Application Thread Exception Msg:{0}", e);
            }
            WriteErrInfo(str);
        }

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {

string str = "";

Exception error = e.ExceptionObject as Exception;
            if (error != null)
            {
                str = string.Format("Application UnhandledException:{0};\nStackTrace:{1}", error.Message, error.StackTrace);
            }
            else
            {
                str = string.Format("Application UnhandledError:{0}", e);
            }
            WriteErrInfo(str);
        }

static void WriteErrInfo(string vErrMsg)
        {
            using (System.IO.FileStream fs = new System.IO.FileStream(Application.StartupPath + "\\Log\\TestException.log",
                System.IO.FileMode.Append, System.IO.FileAccess.Write))
            {
                using (System.IO.StreamWriter w = new System.IO.StreamWriter(fs,System.Text.Encoding.UTF8))
                {
                    w.WriteLine(vErrMsg); DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
                }
            }
        }

详细分析可参见:

http://www.cnblogs.com/eaglet/archive/2009/02/17/1392191.html

时间: 2024-10-19 17:35:29

.Net下Unhandled Exception的捕获的相关文章

Unhandled Exception:System.DllNotFoundException: Unable to load DLL"**"

在项目中使用C#代码调用C++ DLL时.常常会出现这个问题:在开发者自己的电脑上运行没有问题,但是部署到客户电脑上时会出现下面问题: Unhandled Exception:System.DllNotFoundException: Unable to load DLL"**":找不到指定的模块. 出现这个问题的原因:一般是该客户电脑上缺少该DLL的依赖项.一般来说比较常见的缺少项是msvcr1200.dll msvcp1200.dll.具体缺少什么,需要使用Dependency Wa

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x......

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x...... 对于C++初学者或粗心者,很容易犯如下图所示错误: 那么该错误是由什么造成的呢? 答案无疑只有一个,即:读取了本该没有的值或者地址. 那么如何解决呢? 第一件事,检查下你传入的参数是否合法: 第二件事,若malloc了一块内存,必须记得free: 第三件事,你是否赋值了已经溢出的值或地址. 举例说

unity, Unhandled Exception: System.UnauthorizedAccessException: Access to the path "xxx\Temp\Assembly-CSharp-Editor.dll.mdb" is denied.

Unhandled Exception: System.UnauthorizedAccessException: Access to the path "xxx\Temp\Assembly-CSharp-Editor.dll.mdb" is denied. 在windows上用unity出现上面错误,解法是关掉unity和monodeveloper,然后以管理员身份重新打开unity.

ajax回调数据 Structs has detected an unhandled exception 问题

Structs has detected an unhandled exception 今天算倒霉了,用maven写的一个项目,竟然出现了以下低级的错误,在用ajax修改密码时,回调的数据竟然是以下的东东.... ************************************************************************************** $.post("${pageContext.request.contextPath}/user_editPass

【转载】W3C下的冒泡和捕获机制。到底是冒泡呢。还是捕获呢。一个DOM元素绑定多个事件时如何执行。

原文  http://blog.csdn.net/u011719449/article/details/23787627 在准备阿里前端面试的时候看到这么一道题. 一个DOM元素绑定两个事件,一个冒泡,一个捕获,则事件会执行多少次,执行顺序如何. 这导致了我对冒泡和捕获又进一步深入的了解.(永远都在发现自己知识匮乏的日子中度过人生真是好抓急啊.) 首先冒泡和捕获是怎么一回事. 简单点说.冒泡就是从下往上,像鱼吐泡,泡泡是从下往上升的,也就是DOM元素被触法事件时(此时的dom元素为目标元素),目

Unhandled Exxception “Unhandled exception type IOException”?

Unhandled Exxception  “Unhandled exception type IOException”? 在Android studio中,自动遇见这个异常报错,如果eclipse会自动提示,但是AS提示很抽象,不容易发现,解决方案: You should add "throws IOException" to your main method: public static void main(String[] args) throws IOException { Y

Quartz:ERROR threw an unhandled Exception

详细的错误信息如下: 1 2016-06-28 17:18:13.366 [DefaultQuartzScheduler_Worker-1] ERROR org.quartz.core.JobRunShell:211 - Job group1.job1 threw an unhandled Exception: 2 java.lang.NullPointerException 3 at com.starunion.java.service.timer.JobEndConference.execu

Error : APP-FND-01926: The custom event WHEN-LOGON-CHANGED raised unhandled exception: ORA-06502: PL

In this Document   _afrLoop=440418974213449&id=1508865.1&_afrWindowMode=0&_adf.ctrl-state=9tvmuxok_4#SYMPTOM">Symptoms   Cause   Solution APPLIES TO: Oracle Application Object Library - Version 11.5.9 to 12.1.3 [Release 11.5 to 12.1]Or

Solve Error: Unhandled exception at 0x00905a4d in xxx.exe: 0xC0000005: Access violation.

在使用Visual Studio进行项目开发的时候,有时候会遇到下面这个错误: Unhandled exception at 0x00905a4d in xxx.exe: 0xC0000005: Access violation 产生这个错误的原因可能是在Visual Studio中链接了后缀为"*.a"的库文件,这种库文件应该是在Linux系统或者是使用MinGW编译时链接的,用VS的话应该链接"*.lib"的库文件,而下载的第三方库中一般会包含"*.d