我在 try-catch 语句中有一个 try-catch 语句。内部 catch 捕获错误,但 throw 不会导致错误在 out catch 语句中被捕获。Breifly,我的脚本格式类似于:
$ErrorPreference = "Stop"
try
{
getStuffFromDB
putStuffInDB
}
catch
{
write-host ("Error: " + $error[0])
}
function getStuffFromDB
{
try
{
-- database query statement
}
catch
{
throw
}
finally
{
close connection and clean up
}
}
function putStuffInDB
{
try
{
-- database insert statements statement
}
catch
{
throw
}
finally
{
close connection and clean up
}
}
当我运行脚本时没有错误,但我注意到我试图填充的 SQL Server 数据库缺少数据。当我在调试中重新运行脚本时,函数“putStuffInDB”有一个错误,在 catch 块中被捕获。但是当我踩到消息时,消息并没有被“抛出”到外部 catch 块,而是处理了 finally 块并终止。
我显然错过了一些我没有看到的东西。我过去曾在 C# 中使用过该构造,并且从未遇到过将错误“传递”到外部 catch 块的问题。