一个异常的困惑。。。蛋疼好多天了
我的程序里用了EurekaLog来记录用户反馈的错误,最近发现一个很让我很蛋疼的问题
异常信息是:
Invalid characters in path.
异常代码片段
- Delphi(Pascal) code
try for Path in PathList do begin if DirectoryExists(Path) then begin FileNameList := TDirectory.GetFiles(Path, '*.exe', TSearchOption.soAllDirectories); // 出错行 for FileName in FileNameList do begin // 一些文件处理代码,略去 end; end; end;except // 这里抓取引发异常的路径,当然还有其他用户反馈的别的路径,各不相同,我只是随机挑出的一个 // Path = 'C:\Program Files\Tencent\QQPCMgr\6.6.2158.401\'end;
通过跟踪调试发现抛出异常的地方应该是在IOUtils.pas的1401行这里
- Delphi(Pascal) code
if not TPath.HasValidPathChars(Path, False) then raise EArgumentException.CreateRes(@SInvalidCharsInPath); // 异常:Invalid characters in path.
困惑的地方就在这了,扫描文件前明明用DirectoryExists检查过了,目录是合法存在的
而且异常发生后抓到的Path路径也没有不合法字符啊
我单独用TPath.HasValidPathChars来检测这个Path也是通过的。。。
但是怎么就会提示Invalid characters in path.异常呢
[解决办法]
没遇到,帮你顶顶
[解决办法]
TPath.IsValidPathChar();
先判断到底是哪个字符是不识别的吧
[解决办法]
进入HasValidPathChars这个函数源码看看,他要判断什么东西
[解决办法]
楼主 EurekaLog 你用的怎么样
我怎么用了报了些未知错误