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",
$@
);
|