Linee guida per la gestione degli errori
È necessario conoscere le linee guida per la gestione degli errori durante la scrittura di uno script PowerShell o Perl per OnCommand Workflow Automation (Wfa).
Gestione degli errori PowerShell
| Linee guida | Esempio |
|---|---|
I parametri comuni aggiunti ai cmdlet dal runtime di PowerShell includono parametri di gestione degli errori come ErrorAction e WarningAction:
Per ulteriori informazioni, è possibile utilizzare |
ErrorAction: L'esempio seguente mostra come gestire un errore senza terminazione come errore finale: New-NcIgroup-Name $IgroupName-Protocol $Protocol-Type$OSType-ErrorActionstop WarningAction New-VM-Name $VMName-VM $SourceVM-DataStore$DataStoreName-VMHost$VMHost-WarningActionSilentlyContinue |
Utilizzare l'istruzione generale “try/catch” se il tipo di eccezione in entrata non è noto. |
try
{
"In Try/catch block"
}
catch
{
"Got exception"
}
|
Se si conosce il tipo di eccezione in entrata, utilizzare l'istruzione “Try/catch” specifica. |
try
{
"In Try/catch block"
}
catch[System.Net.WebExceptional], [System.IO.
IOException]
{
"Got exception"
}
|
Utilizzare l'istruzione “finally” per rilasciare le risorse. |
try
{
"In Try/catch block"
}
catch
{
"Got exception"
}
finally
{
"Release resources"
}
|
Utilizzare le variabili automatiche di PowerShell per accedere alle informazioni sulle eccezioni. |
try
{
Get-WFALogger -Info -message $("Creating
Ipspace: " + $Ipspace)
New-NaNetIpspace-Name $Ipspace
}
catch
{
Throw "Failed to create Ipspace. Message:
" + $_.Exception.Message;
}
|
Gestione degli errori Perl
| Linee guida | Esempio |
|---|---|
Perl non include il supporto della lingua nativa per i blocchi try/catch. Utilizzare i blocchi di valutazione per il controllo e la gestione degli errori. Mantieni i blocchi di valutazione il più piccolo possibile. |
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",
$@
);
|