我的PowerShell脚本抛出了异常,但没有给出异常抛出的行号:
我认为最好的做法是重构脚本,使用try/catch块来缩小抛出
编辑:被接受的答案to this question涉及try/catch方法,我已经提到这不是我的首选方法。再次问一下,有没有办法让PowerShell在抛出异常时报告行号,而不需要强制使用try/catch?我是否必须将整个脚本包装在通用的try/catch中?我是否必须使用一些
The process cannot access the file 'C:/path/to/foo.txt' because it is being used by another process.
+ CategoryInfo : NotSpecified: (:) [Set-Content], IOException
+ FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.SetContentCommand
+ PSComputerName : localhost
我认为最好的做法是重构脚本,使用try/catch块来缩小抛出
Set-Content
异常的范围 - 但在这种情况下,由于脚本的规模较大,我正在尝试避免该选项。相反,我希望有一个自上而下的解决方案 - 例如,能够以添加了详细信息的方式调用脚本,使得Powershell在堆栈跟踪中打印行号(我相信Python默认会这样做)。Powershell 3.0原生支持这个吗?编辑:被接受的答案to this question涉及try/catch方法,我已经提到这不是我的首选方法。再次问一下,有没有办法让PowerShell在抛出异常时报告行号,而不需要强制使用try/catch?我是否必须将整个脚本包装在通用的try/catch中?我是否必须使用一些
--verbose
标志调用脚本?Powershell 3.0支持类似的功能吗?
At D:\PShell\SO\56588150.ps1:21 char:1
行(或类似行)。您可以检查$Error[0].ScriptStackTrace
属性。 - JosefZ$Error [0] .InvocationInfo.ScriptLineNumber
。 - Drew$_.Exception
在 catch 块的上下文中被调用)。 - alex