0

我的 PowerShell 代码有问题。有时——无论出于何种原因——我的脚本直接跳到 finally 块中,而没有来自 catch 块的任何错误消息。这是我的 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 值。然而,有时它会直接跳入 finally 块而没有写“sleeptime over..”甚至“chaught exception...”

4

1 回答 1

0

catch 块执行的唯一时间是 try 块中出现异常时。您在 try 块中所做的唯一有可能产生异常的事情就是写入日志文件。

因此,catch 块只会在出现阻止输出写入日志文件的异常时执行。

让我知道我是否遗漏了什么。

于 2012-08-10T21:21:26.107 回答