Diretrizes para tratamento de erros
Você deve estar ciente das diretrizes para manipulação de erros ao escrever um script PowerShell ou Perl para OnCommand Workflow Automation (WFA).
Manipulação de erros do PowerShell
Diretrizes | Exemplo |
---|---|
Parâmetros comuns adicionados aos cmdlets pelo PowerShell runtime incluem parâmetros de manipulação de erros, como ErrorAction e WarningAction:
Para obter mais informações, você pode usar o |
ErrorAction: O exemplo a seguir mostra como lidar com um erro não-terminação como um erro de terminação: New-NcIgroup-Name $IgroupName-Protocol $Protocol-Type$OSType-ErrorActionstop WarningAction New-VM-Name $VMName-VM $SourceVM-DataStore$DataStoreName-VMHost$VMHost-WarningActionSilentlyContinue |
Use a instrução geral "try/catch" se o tipo da exceção recebida for desconhecido. |
try { "In Try/catch block" } catch { "Got exception" } |
Use a instrução específica "try/catch" se o tipo da exceção recebida for conhecido. |
try { "In Try/catch block" } catch[System.Net.WebExceptional], [System.IO. IOException] { "Got exception" } |
Use a declaração "finalmente" para liberar recursos. |
try { "In Try/catch block" } catch { "Got exception" } finally { "Release resources" } |
Use variáveis automáticas do PowerShell para acessar informações sobre exceções. |
try { Get-WFALogger -Info -message $("Creating Ipspace: " + $Ipspace) New-NaNetIpspace-Name $Ipspace } catch { Throw "Failed to create Ipspace. Message: " + $_.Exception.Message; } |
Manipulação de erros Perl
Diretrizes | Exemplo |
---|---|
Perl não inclui suporte de linguagem nativa para blocos try/catch. Use blocos eval para verificar e lidar com erros. Mantenha os blocos eval o mais pequenos possível. |
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", $@ ); |