string FolderStr="2";
 //string FolderStr=@"d:\NewFolder";//这样就是正常在d:\NewFolder创建了文件夹。
if (Directory.Exists(FolderStr))
            {//存在打开
                System.Diagnostics.Process.Start("Explorer.exe", FolderStr);
            }
            else
            {//不存在创建
                try
                {
                    Directory.CreateDirectory(FolderStr);
                    System.Diagnostics.Process.Start("Explorer.exe", FolderStr);
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
                }
                 
            }

解决方案 »

  1.   

    我想用TRY捕获看会不会出错,发现竟然不出错,而是在程序所在的目录创建了文件夹2。
      

  2.   

    绝对路径,从根目录为起点到你所在的目录;(例如:string FolderStr=@"d:\NewFolder")
    相对路径,从一个目录为起点到你所在的目录。(例如:string FolderStr="2",这里“一个目录”指的是你应用程序所在的目录)
      

  3.   

    我就是想要获取错误,让他出错。但TRY获取不到。
      

  4.   

    Directory.Exists:如果在尝试确定是否存在指定的文件时发生任何错误,则该 Exists 方法返回 false。 可能在引发异常(如使用无效的字符传递文件名或字符过多、磁盘失效或缺失)时发生,也可能在调用方无文件读取权限时发生。
    系统自行处理异常,该方法只会返回false。
      

  5.   

    因为这本来就是允许的当然不会catch到错误MSDN的文档做如下说明
    若要在当前目录是 C:\Users\User1 时创建目录 C:\Users\User1\Public\Html,可以使用以下三种方法:
    Directory.CreateDirectory("Public\\Html");
    Directory.CreateDirectory("\\Users\\User1\\Public\\Html");
    Directory.CreateDirectory("c:\\Users\\User1\\Public\\Html");
    所以楼主的方法符合第一种
      

  6.   

        你想要的结果是当用户直接输入类似2这样的路径的时候,程序不创建文件夹,而是抛出异常,是吗?如果是这样,你可以用String类里面IndexOf(':')来判断。如果这个函数返回的结果小于0,那么你自己就抛出一个路径错误的异常