Consignes de gestion des erreurs
Vous devez connaître les consignes relatives à la gestion des erreurs lors de l'écriture d'un script PowerShell ou Perl pour OnCommand Workflow Automation (WFA).
Gestion des erreurs PowerShell
Directives | Exemple |
---|---|
Les paramètres communs ajoutés aux applets de commande par le runtime PowerShell comprennent des paramètres de gestion des erreurs tels que ErrorAction et WarningAction :
Pour plus d'informations, vous pouvez utiliser le |
ErrorAction : l'exemple suivant montre comment gérer une erreur de non-fin en tant qu'erreur de fin : New-NcIgroup-Name $IgroupName-Protocol $Protocol-Type$OSType-ErrorActionstop Warningaction New-VM-Name $VMName-VM $SourceVM-DataStore$DataStoreName-VMHost$VMHost-WarningActionSilentlyContinue |
Utilisez l'instruction générale « try/Catch » si le type d'exception entrante est inconnu. |
try { "In Try/catch block" } catch { "Got exception" } |
Utilisez l'instruction « try/Catch » spécifique si le type d'exception entrante est connu. |
try { "In Try/catch block" } catch[System.Net.WebExceptional], [System.IO. IOException] { "Got exception" } |
Utilisez la déclaration « enfin » pour libérer des ressources. |
try { "In Try/catch block" } catch { "Got exception" } finally { "Release resources" } |
Utilisez les variables automatiques de PowerShell pour accéder aux informations relatives aux exceptions. |
try { Get-WFALogger -Info -message $("Creating Ipspace: " + $Ipspace) New-NaNetIpspace-Name $Ipspace } catch { Throw "Failed to create Ipspace. Message: " + $_.Exception.Message; } |
Gestion des erreurs Perl
Directives | Exemple |
---|---|
Perl n'inclut pas la prise en charge du langage natif pour les blocs Try/Catch. Utilisez des blocs d'évaluation pour vérifier et gérer les erreurs. Conserver les blocs d'évaluation aussi petits que possible. |
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", $@ ); |