powershell - Powershell数据库连接错误检测和错误处理

标签 powershell error-handling database-connection

我试图检测数据库连接是否成功,如果成功,请执行工作,否则,报告连接错误并明显绕过数据库任务。

我很尴尬,因为我似乎未能通过语法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/

相关文章:

.net - LAN 唤醒 Powershell 脚本不起作用

linux - Linux Ubuntu 64 位的普遍 ODBC 连接 - 未找到 DSNADD

c# - 我可以指定一个 dll 以在 Powershell 中使用 New-Object 吗?

powershell - 如何更改我的 Powershell 脚本,以便它以 ANSI-Windows-1252 编码写入输出文件?

在 Burn 中测试安装失败

javascript - 使用 Javascript Promises,是否有关于使用 "error"与 catch 子句的最佳实践?

PHP PDO 更新 - 需要参数和无效的参数号

mysql - 用pdo_mysql连接mysql,在windows运行成功,在CentOS 5.8运行失败

NHibernate 连接字符串 : how to specify port number and server\instance?

loops - PowerShell写入主机-NoNewLine