Skip to main content
OnCommand Workflow Automation 5.1
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

エラー処理のガイドライン

共同作成者

OnCommand Workflow Automation ( WFA )用の PowerShell または Perl スクリプトを作成する際に、エラー処理に関するガイドラインに注意する必要があります。

PowerShell のエラー処理

ガイドライン

PowerShell ランタイムによってコマンドレットに追加される共通パラメータには、 ErrorAction や WarningAction などのエラー処理パラメータがあります。

  • ErrorAction パラメータは、コマンドレットが終了しないエラーに応答する方法を決定します。

  • WarningAction パラメータは、コマンドレットがコマンドレットの警告にどのように対応するかを決定します。

  • Stop 、 SilentlyContinue 、 inquire 、 Continue は、 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",
    $@
);