为什么无法捕获Directory.Exist中的ArgumentException?

Ped*_*o77 0 c# exception-handling

为什么我不能在这里抓住争论的激励:

        string path = "\"";
        bool dirOk = true;
        try
        {
            dirOk = Directory.Exists(path);
        }
        catch (ArgumentException)
        {
            dirOk = false;//Never gets in here
        }
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,样品路径不好,现在改了!

配置VS调试器以暂停所有异常.VS将断言:"ArgumentException发生""路径中的非法字符.",但try catch什么都不做.


编辑2:我想我明白了,抱歉.VS中断,但异常已经在Exists()中捕获.

Hen*_*man 7

发布的代码不会抛出任何异常......

Directory.Exists("nonsense string")回来false.

据我所知,它甚至在字符串包含无效的路径字符时返回null.

MSDN页面上没有提到异常,因此我认为这是非常"安全"的方法.

该页面确实有这样的说法:

如果在尝试确定指定文件是否存在时发生任何错误,则Exists方法返回false.在引发异常的情况下会发生这种情况,例如传递带有无效字符或字符太多的文件名,磁盘失败或丢失,或者调用者没有读取文件的权限.