Richtlinien für die Fehlerbehandlung
Beim Schreiben eines PowerShell oder Perl Skripts für OnCommand Workflow Automation (WFA) müssen Sie die Richtlinien für die Fehlerbehandlung kennen.
PowerShell Fehlerbehandlung
| Richtlinien | Beispiel |
|---|---|
Zu den Cmdlets durch PowerShell Runtime wurden allgemeine Parameter wie ErrorAction und WarningAction hinzugefügt.
Weitere Informationen finden Sie unter |
ErrorAction: Das folgende Beispiel zeigt, wie ein nicht-terminierender Fehler als Fehler beim Beenden behandelt wird: New-NcIgroup-Name $IgroupName-Protocol $Protocol-Type$OSType-ErrorActionstop WarningAction New-VM-Name $VMName-VM $SourceVM-DataStore$DataStoreName-VMHost$VMHost-WarningActionSilentlyContinue |
Verwenden Sie die allgemeine Anweisung „ |
try
{
"In Try/catch block"
}
catch
{
"Got exception"
}
|
Verwenden Sie die spezifische „ |
try
{
"In Try/catch block"
}
catch[System.Net.WebExceptional], [System.IO.
IOException]
{
"Got exception"
}
|
Verwenden Sie die Anweisung „ |
try
{
"In Try/catch block"
}
catch
{
"Got exception"
}
finally
{
"Release resources"
}
|
Verwenden Sie die automatischen PowerShell Variablen, um auf Informationen über Ausnahmen zuzugreifen. |
try
{
Get-WFALogger -Info -message $("Creating
Ipspace: " + $Ipspace)
New-NaNetIpspace-Name $Ipspace
}
catch
{
Throw "Failed to create Ipspace. Message:
" + $_.Exception.Message;
}
|
Perl-Fehlerbehandlung
| Richtlinien | Beispiel |
|---|---|
Perl umfasst keine native Sprachunterstützung für Try/Catch Blocks. Verwenden Sie Evaluierungsblöcke zum Prüfen und behandeln von Fehlern. Halten Sie Evaluierungsblöcke so klein wie möglich. |
eval {
$wfa_util->sendLog('INFO',
"Quiescing the relationship :
$DestinationCluster://$DestinationVserver
/$DestinationVolume"
);
$server->snapmirror_quiesce(
'destination-vserver' => $DestinationVserver,
'destination-volume' => $DestinationVolume
);
$wfa_util->sendLog('INFO', 'Quiesce operation
started successfully.');
};
$wfa_util->checkEvalFailure(
"Failed to quiesce the SnapMirror relationship
$DestinationCluster://$DestinationVserver
/$DestinationVolume",
$@
);
|