エラー処理のガイドライン
OnCommand Workflow Automation ( WFA )用の PowerShell または Perl スクリプトを作成する際に、エラー処理に関するガイドラインに注意する必要があります。
PowerShell のエラー処理
| ガイドライン | 例 |
|---|---|
PowerShell ランタイムによってコマンドレットに追加される共通パラメータには、 ErrorAction や WarningAction などのエラー処理パラメータがあります。
詳細については、 PowerShell CLI の「 Get-Help About_CommonParameters 」コマンドを使用してください。 |
ErrorAction :次の例は、終了しないエラーを終了エラーとして処理する方法を示しています。 New-NcIgroup-Name $IgroupName-Protocol $Protocol-Type$OSType-ErrorActionstop 警告アクション New-VM-Name $VMName-VM $SourceVM-DataStore$DataStoreName-VMHost$VMHost-WarningActionSilentlyContinue |
着信例外のタイプが不明な場合は、一般的な "try/catch" ステートメントを使用します。 |
try
{
"In Try/catch block"
}
catch
{
"Got exception"
}
|
着信例外のタイプがわかっている場合は、特定の「 try/catch 」ステートメントを使用します。 |
try
{
"In Try/catch block"
}
catch[System.Net.WebExceptional], [System.IO.
IOException]
{
"Got exception"
}
|
「 finally 」文を使ってリソースを解放します。 |
try
{
"In Try/catch block"
}
catch
{
"Got exception"
}
finally
{
"Release resources"
}
|
PowerShell の自動変数を使用して、例外に関する情報にアクセスします。 |
try
{
Get-WFALogger -Info -message $("Creating
Ipspace: " + $Ipspace)
New-NaNetIpspace-Name $Ipspace
}
catch
{
Throw "Failed to create Ipspace. Message:
" + $_.Exception.Message;
}
|
Perl エラー処理
| ガイドライン | 例 |
|---|---|
Perl には、 try/catch ブロックに対するネイティブ言語サポートは含まれていません。eval ブロックを使用して、エラーの確認と処理を行います。評価ブロックはできるだけ小さくしてください。 |
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",
$@
);
|