曾经做过测试,本文是本章优秀测试人员的精神,必须定位到原因,不然吃不下饭。其实可以很容易绕过这种问题。
环境:
PowerShell 5.1.16299.64
Windows 10
现有代码如下:
# 备份代码 Function backup_code() { # 异常处理块, 覆盖命令的 ErrorAction, 所以如果 $ErrorActionPreference 为 Continue, 单行命令的 ErrorAction 为 Stop 并不会阻止脚本执行 Trap { Write-Host "Backup code occurred error: $($_.Exception.Message)" Set-Location $CurrentPath -ErrorAction "SilentlyContinue" return $False } return 2 }
运行脚本一直报一个错误:
说是 Function backup_code 中最后的一个" } "有问题, 意外标记,这是语法错误,但是我查了好久,每条语句执行都没有问题。
最终,我发现删除函数里面的第一行注释,就可以。但是我觉得肯定不是简单的说 Trap 必须函数首行或者注释不能在首行,我不行。所以,我尝试过很多方法:
- 删除注释: 错误消失
- 将注释分解为几行:错误仍在
- 将注释后面一部分删除:错误消失
- 将注释移到Trap中:错误消失
这简直不可理喻有没有??????????
为了更精确的定位那个问题,我将注释后面的一部分 "单行命令的 ErrorAction 为 Stop 并不会阻止脚本执行" 从后往前各种组合删除和打乱顺序,以及进行逐个字删除。
最后发现:
当把"并"字删除后,错误消失!!!!!!!!
总结:
此情况仅在函数中定义 Trap 异常处理块,且在 Trap 块上有"并"字注释, 才会出现这种问题,俩个条件缺一不可。如果是Try-Catch-Finally等不会出现。
Update:
不是因为并的原因, 而是因为中文字符导致换行符被破坏了,所以,造成了这种问题
至此,我想说:我对此表示无语,"并" 保留对微软追究精神损失费的权利。