powershell - PowerShell:我可以捕获所有异常的单点

标签 powershell exception-handling

我有几个PowerShell脚本文件。 a.ps1“调用”(通过点运算符)b.ps1c.ps1脚本。

a.ps1    #main
  b.ps1  #helper1 <- need catch error there
  c.ps1  #helper2 <- error is being raised there
b.ps1文件内部是否可能捕获c.ps1文件中引发的终止错误?

谢谢。

编辑

里面a.ps1:
. .\b.ps1
. .\c.ps1

里面b.ps1:
trap {
  Write-Host "my trap block"
}

里面c.ps1:
throw "test"

在此示例中未调用“我的陷阱块”

最佳答案

您可以在trap中安装b.ps1处理程序,以处理c.ps1中的错误(如果您对源b.ps1加点,以便它在与a.ps1相同的范围内运行),例如:

. .\b.ps1

更新:确实不起作用。似乎PowerShell不支持通过点源在a.ps1范围内运行的概念。不确定您是否可以做得更好:
a.ps1 contents:
---------------
. .\b.ps1

trap {
  TrapHandler $_
  continue
}

.\c.ps1

b.ps1 contents:
---------------
function TrapHandler($error)
{
  Write-Host "oops - $error" 
}

看起来陷阱处理程序需要位于a.ps1中,但是您可以在b.ps1中定义陷阱处理功能。不过,不要认为您可以在此函数中控制错误的处理(中断或继续)。

关于powershell - PowerShell:我可以捕获所有异常的单点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5077550/

相关文章:

windows - 使用 PowerShell 递归获取 AD 组成员资格

c# - 使用 "catch, when"捕获异常

spring - 使用 @ControllerAdvice 制作简单的 servlet 过滤器

powershell - 如何使用变量存储catch block 的错误类型?

java - Java SE7 中的异常抑制

powershell - 使用 windows 命令行获取每个内核的 CPU 使用率

azure - 如何使用 Powershell 获取 Azure 中 SQL Server 的防火墙规则?

windows - 创建一个每分钟运行一次的计划任务,无需用户使用 PowerShell 登录

powershell - 如果PowerShell不提供,如何使用OEM编码读取文件?

c++ - std::is_nothrow_destructible 的奇怪行为