我试图检测数据库连接是否成功,如果成功,请执行工作,否则,报告连接错误并明显绕过数据库任务。
我很尴尬,因为我似乎未能通过语法101。
我尝试了两种不同的方法,两种方法都不起作用。
方法1
在这段代码中,我似乎无法正确获得$ connection.State = Open语法。我可以在调试器$ connection.State = Open中看到-我似乎无法对其进行适当的测试。
$connection = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($conninfo)
Try {$connection.open()}
Catch {Write-Warning "Sorry, DB Connect failed"}
If ($connection.State = Open) {
Write-Output "No Error"
DoWork()
$connection.Close()
}
方法2:
在此代码中,捕获了连接错误,但是成功的连接未输入期望的“无错误阻止”。
$connection = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($conninfo)
Try {$connection.open()}
Catch {Write-Warning "Sorry, DB Connect failed"}
If (!$error) {
Write-Output "No Error"
DoWork()
$connection.Close()
}
}
最佳答案
尝试{}捕获{}只会遇到终止错误。尝试类似:
Try
{
$erroraction = "stop"
$connection.open()
$erroraction = "continue"
}
Catch {
Write-Warning "Sorry, DB Connect failed"
}
使用的非终止错误处理
$connection.open()
if(!$?) #did the last command fail?
{
Write-Warning "Sorry, DB Connect failed"
}
编辑:我可能会误解了确切的问题,但是如果问题是
$?
错误地是true
,则因为它仅使用了最后一个命令。因此,您的运行write-warning
的catch块成功了,您需要存储$?您期望失败的命令后立即返回值,或者直接在catch块中设置 bool(boolean) 值以触发下一个块。
关于powershell - Powershell数据库连接错误检测和错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49158549/