0

PowerShell コードに問題があります。何らかの理由で、catch ブロックからのエラー メッセージが表示されずに、スクリプトが finally ブロックにジャンプすることがあります。これは私の PowerShell コードです:

try
{
    $sleepTime = $reservationDuration - $prepareTime
    (get-date -format hh:mm:ss)+"`tinfo:`tstart sleep before warning VIP sleep-time:"+$sleepTime | out-file $logFilePath -append
    start-sleep -s $sleepTime
    (get-date -format hh:mm:ss)+"`tinfo:`tsleeptime over" | out-file $logFilePath -append
}
catch
{
    (get-date -format hh:mm:ss)+"`terror:`tchaught exception: "+$error[0] | out-file $logFilePath -append
}


finally{
    (get-date -format hh:mm:ss)+"`tinfo:`tFinally" | out-file $logFilePath -append
}

ご覧のとおり、何が起こったかを確認するためにいくつかのログ ファイルを作成しています。$sleepTime 変数で常に正しい int 値を取得しています。ただし、「sleeptime over..」または「chaught exception...」さえも書き込まずに、finally ブロックにジャンプすることがあります。

4

1 に答える 1

0

catch ブロックが実行されるのは、try ブロックで例外が発生したときだけです。例外を生成する可能性がある try ブロックで行っている唯一のことは、ログ ファイルへの書き込みです。

したがって、catch ブロックは、ログ ファイルへの出力の書き込みを妨げる例外が発生した場合にのみ実行されます。

何か不足している場合はお知らせください。

于 2012-08-10T21:21:26.107 に答える