gpt4 book ai didi

powershell - 使用PowerShell命令行时未捕获到异常,但使用PowerShell ISE时却按预期捕获了异常

转载 作者:行者123 更新时间:2023-12-03 00:01:29 24 4
gpt4 key购买 nike

我正在运行PowerShell 2.0。

我有一个PowerShell脚本,可将记录添加到数据库并返回添加的记录的ID。
记录ID作为DataRow对象中称为new_deal_id的属性(称为ResultSet)返回。

如果数据库端出现问题,则可能没有设置new_deal_id属性,或者根本不存在该属性。

为了应对这种情况,我将属性的读取包装在try / catch块中,如下所示。

try {
$ErrorActionPreference = "Stop"
$ResultSet = Read-DatabaseData -OdbcCommand $OdbcCommand -SqlQuery $Sql
$NewDealID = $ResultSet.new_deal_id
}
catch {
throw
}
finally {
$ErrorActionPreference = "Continue"
}

如果我使用PowerShell ISE或PowerGui运行脚本,则该属性不存在时会捕获以下所示的异常
Property 'new_deal_id' cannot be found on this object. Make sure that it exists.
At line:1 char:12
+ $ResultSet. <<<< newdeal
+ CategoryInfo : InvalidOperation: (.:OperatorToken) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : PropertyNotFoundStrict

但是,如果我从PowerShell命令行运行脚本,则不会捕获到异常,并且脚本将继续运行,就像没有发生错误一样。

当该属性不存在时,为什么PowerShell命令行无法捕获该异常?

最佳答案

这可能是因为您没有在运行脚本的控制台中启用严格模式。(Powershell和ISE使用不同的配置文件)

若要启用严格模式,请使用Set-Strictmode cmdlet。

例:

Set-StrictMode -Version latest

关于powershell - 使用PowerShell命令行时未捕获到异常,但使用PowerShell ISE时却按预期捕获了异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26849716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com