none
怎样才能及时捕捉到异常? RRS feed

  • 问题

  • 下面的代码打开了远程数据库的连接,

                     try
                    {
                        con = new SqlConnection("data source=" + validServerIP + ";uid=sa;Password=a8bak66;Initial Catalog=jsdb;Timeout=60 ");
                        con.Open();
                    }
                    catch (Exception e)
                    {//设置断点
                        if ((e.Message.ToString()).Contains("provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接")) return null;
                    }
    
    
    

    我给了个错误的服务器IP,运行VS调试发现,在程序运行到所设置的断点时,Intellitrace显示已经出现了很多次(大约十次)所示的异常,这些异常都是con.Open()语句已发的。
    为什么程序是在引发十次异常之后才捕捉到?怎样在第一次引发时就能捕获到呢?

    我的程序中多处需要访问服务器,FTP方式或数据库连接,都需要考虑网络或服务器出现异常的情况,请给出这方面的建议。谢谢指教!

    2012年1月14日 3:44

全部回复

  • 我倒是认为是该程序执行了以上代码十次

    每次都有捕捉到Exception,您才会在断点上看到十次的Exception


    2012年1月14日 4:42
  • 我倒是认为是该程序执行了以上代码十次

    每次都有捕捉到Exception,您才会在断点上看到十次的Exception


    应该不是的,当那个代码运行几秒钟后(正常是不到一秒就能完成),还没有运行到我设置的中断,这时就直接按下Intellitrace中断后,就能看到已经引发了大约十次的异常,尝试过很多遍都是如此。

    我猜想,是否.net在引发类似网络异常一定的次数后,才会向我的代码抛出异常,此时才能被我捕获到。请知道的帮我指教下,谢谢!

    2012年1月14日 6:54
  • 我倒是认为是该程序执行了以上代码十次

    每次都有捕捉到Exception,您才会在断点上看到十次的Exception


    等到VS运行到我设置的断点时,大约要半分钟了。
    2012年1月14日 6:56
  • 我在调试和访问远程服务器(htp或连接数据库)有关的代码时,经常看到Intellitrace显示已经引发了多次异常,但是我的代码却没有捕获到(我猜测是.net根本没有向用户程序抛出,除非连续引发了某个次数后),这种情况只是在调试和网络、服务器有关的代码时才会遇到。望有这方面经验的能指教,谢谢!
    2012年1月14日 9:24