很简单的程序。但是每次运行都有一个异常。private void button1_Click(object sender, EventArgs e)
{
    try
    {
        WebClient web = new WebClient();
        Stream stream=web.OpenRead(@"http:\\www.sohu.com");
    }
    catch (Exception ee)
    {
        MessageBox.Show(ee.Message);
    }
}
运行就有一个 如下的异常 (在vs中菜单 '调试'->‘异常’中全勾上才会出现)
-----------------------------------------------------------------------------
在 System.IO.IOException 中第一次偶然出现的“mscorlib.dll”类型的异常
其他信息: 指定的注册表项不存在。
----------------------------------------------------------------------------
而且这个异常在我机器上没什么影响可以忽略。但是在某些电脑上好像会报出来。
也不知道是不是环境问题。
如解决,另开5贴 500分相送。

解决方案 »

  1.   

    应该是环境问题,刚测试过,没有发生异常。
    运行环境:win8/vs2012 update3
      

  2.   


    谢谢朋友啊。(在vs中菜单 '调试'->‘异常’中全勾上才会出现)请问这个您勾上了吧。
      

  3.   


    谢谢朋友啊。(在vs中菜单 '调试'->‘异常’中全勾上才会出现)请问这个您勾上了吧。
      

  4.   

    楼主调试一下呢  看看是System.IO.IOException下面的哪个异常
      

  5.   

    是不是http:\\www.sohu.com应该为http://www.sohu.com啊?
      

  6.   

    "在 System.IO.IOException 中第一次偶然出现的“mscorlib.dll”类型的异常"这种东西是.net底部自己管理的,对你的应用程序来说是“正常的”。你干么要让它中断?胡乱地“全勾上”是荒唐的。.net底层的许多异常你必须让它顺利地忽略掉!不要修改默认的这个设置,不要随便“打勾”。
      

  7.   

    反过来说,我们看你的编程。也是不要胡乱写什么try...catch。应用程序通常只要在最外层(表现层)统一地捕获异常、给用户打印一个友好的信息提示,这就够了。你用不着些try...catch。当你写了try....catch,如果try里边的代码很多,你怎么让调试器中断到出错的那一条语句上、你去调试代码和当时的各种变量?你怎样根据调用堆栈去调试各层调用程序入口的变量?更有甚者,在try...catch中去自欺欺人地隐藏错误异常,让程序带着“病”继续执行。这给随后的报异常时的调试操作更是带来了巨大的灾难。