首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

如果没有加 try catch ,但是报错了还想去捕捉这个异常信息,如何做啊

2013-07-11 
如果没有加 try catch ,但是报错了还想去捕捉这个错误信息,怎么做啊。代码里面 try catch 并不是加的很完全

如果没有加 try catch ,但是报错了还想去捕捉这个错误信息,怎么做啊。
代码里面 try catch 并不是加的很完全,程序偶尔会自己关闭,有没有一个全局的可以捕捉错误信息的。
在程序关闭前捕捉到这个错误信息。
[解决办法]
如果是Web的话,可以用ExceptionFilter或者用Elmah

还有一种方式是VS中内置的
打开Debug菜单,Exceptions,选择你要Exception,打钩

还有就最差的方式,可以加一个大的Try Catch包围你代码……
[解决办法]

引用:
代码里面 try catch 并不是加的很完全,程序偶尔会自己关闭,有没有一个全局的可以捕捉错误信息的。
在程序关闭前捕捉到这个错误信息。


http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.threadexception(v=vs.100).aspx


http://msdn.microsoft.com/zh-cn/library/system.windows.threading.dispatcher.unhandledexception(v=vs.100).aspx


http://msdn.microsoft.com/zh-cn/library/system.appdomain.unhandledexception(v=vs.100).aspx
[解决办法]
引用:
是C/S的
如果里面有线程的话,这个Try Catch 能不能起到作用啊

如果是严重的进程崩溃异常,管他什么线程不线程的?你写多少语句都捕获不了。

而你在进程内用其它代码可以捕获的异常,删掉你多余的“其他代码”,这代码当然就可以捕获。
[解决办法]

static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            try
            {
                //处理未经处理的异常
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                //捕获应用程序已发生的异常
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);


                //捕获未经处理的异常对象
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);


                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Frm_Login());            
            }
            catch (Exception ex)
            {
                try
                {
                                        if (MessageBox.Show("程序执行期间发生异常,请检查输入数据是否合法,或者联系管理员!", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error) == DialogResult.Abort)
                    {
                        Application.Exit();
                    }
                }
                catch
                {
                    MessageBox.Show("系统出现严重错误,请终止当前操作,并及时联系管理员。对此给您带来的不便,我深表歉意!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }                              
            }            


        }

        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            try
            {
                Exception error = e.Exception as Exception;
                                if (MessageBox.Show("程序执行期间发生异常,请检查输入数据是否合法,或者联系管理员!!", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error) == DialogResult.Abort)
                {
                    Application.Exit();
                }
            }
            catch
            {
                MessageBox.Show("系统出现严重错误,请终止当前操作,并及时联系管理员。对此给您带来的不便,我深表歉意!!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }
           
        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            try
            {
                Exception error = e.ExceptionObject as Exception;
                                //MessageShowInfo.Show("警告", "程序执行期间发生异常,请检查输入数据是否合法,或者联系管理员!");
                if (MessageBox.Show("程序执行期间发生异常,请检查输入数据是否合法,或者联系管理员!!!", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error) == DialogResult.Abort)


                {
                    Application.Exit();
                }
            }
            catch
            {
                MessageBox.Show("系统出现严重错误,请终止当前操作,并及时联系管理员。对此给您带来的不便,我深表歉意!!!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }
           
        }

    }




这个可以参考一下  写在 Program.cs这个文件中的
[解决办法]
AppDomain currentDomain = AppDomain.CurrentDomain;
      currentDomain.UnhandledException += new UnhandledExceptionEventHandler(。。。);

热点排行