Powershell中未处理异常的默认行为
这可能不是这个请求的最佳标题 我知道我可以将Powershell代码包装在Powershell中未处理异常的默认行为,powershell,error-handling,Powershell,Error Handling,这可能不是这个请求的最佳标题 我知道我可以将Powershell代码包装在try…catch块中。我还知道我可以设置$ErrorActionPreference变量 但是,我不希望将整个脚本包装在一个大的Try…Catch块中,而是希望有一些默认代码在发生未处理的异常时运行 例如,假设发生了一些未被try…catch捕获的意外错误。我希望PowerShell在退出之前(假设ErrorActionPreference为STOP)运行特定的代码块,以便记录或报告意外错误 有办法吗?通常使用try…c
try…catch
块中。我还知道我可以设置$ErrorActionPreference
变量
但是,我不希望将整个脚本包装在一个大的Try…Catch
块中,而是希望有一些默认代码在发生未处理的异常时运行
例如,假设发生了一些未被try…catch
捕获的意外错误。我希望PowerShell在退出之前(假设ErrorActionPreference为STOP)运行特定的代码块,以便记录或报告意外错误
有办法吗?通常使用
try…catch…finally
块的finally
部分来实现此目的
try {
# do some stuff
}
catch {
# do some stuff on exception
}
finally {
# do some stuff regardless of whether we caught an exception
}
您也可以只使用try
和finally
而不使用catch
这个“好”方法是使用try..catch
块来处理它。它们主要用于针对代码的特定部分,并提供有针对性的异常处理。如果你需要更“全球化”的东西,你可能想用一句话:
function TrapTest {
trap {"Error found."}
...code
CauseErrorHere
....code
}
陷阱适用于整个范围(例如函数、脚本等),并在发生异常时运行。这允许您记录错误,并且如果需要,还允许在异常发生后继续执行。是的,
trap
语句。真不敢相信我竟然忘记了trap
语句。谢谢