Param()块中的PowerShell捕获异常
当Param()块中的PowerShell捕获异常,powershell,powershell-3.0,Powershell,Powershell 3.0,当$age超出范围时如何捕获异常?正如注释中指出的,需要在调用上下文中捕获验证错误 试试看{ \Set-Age.ps1 } catch[System.Management.Automation.ParameterBindingException]{ Write Host“尝试将参数绑定到参数$($).Exception.ParameterName)时引发错误,消息为:$($).Exeption.message” } 抓住{ #参数绑定器以外的其他对象引发了异常 } 正如注释中指出的,需要在调用上
$age
超出范围时如何捕获异常?正如注释中指出的,需要在调用上下文中捕获验证错误
试试看{
\Set-Age.ps1
}
catch[System.Management.Automation.ParameterBindingException]{
Write Host“尝试将参数绑定到参数$($).Exception.ParameterName)时引发错误,消息为:$($).Exeption.message”
}
抓住{
#参数绑定器以外的其他对象引发了异常
}
正如注释中指出的,需要在调用上下文中捕获验证错误
试试看{
\Set-Age.ps1
}
catch[System.Management.Automation.ParameterBindingException]{
Write Host“尝试将参数绑定到参数$($).Exception.ParameterName)时引发错误,消息为:$($).Exeption.message”
}
抓住{
#参数绑定器以外的其他对象引发了异常
}
调用方必须捕获参数验证的异常。无法在Param()
块中捕获它。如果我无法捕获异常,[ValidateRange]的主要目的是什么?将异常保存为。通常预期用户会提供不适当的参数值。[需要引证
]目的是确保脚本或函数仅在参数接收到有效值时运行,否则不会运行。如果您希望参数接受任何内容并处理您自己得到的任何值:不要使用参数验证。在函数/脚本体中执行您自己的类型检查(例如在Begin{}
块中)。我说过在Param()
块中无法捕获它。参数验证的异常必须由调用方捕获。无法在Param()
块中捕获它。如果我无法捕获异常,[ValidateRange]的主要目的是什么?将异常保存为。通常预期用户会提供不适当的参数值。[需要引证
]目的是确保脚本或函数仅在参数接收到有效值时运行,否则不会运行。如果您希望参数接受任何内容并处理您自己得到的任何值:不要使用参数验证。在函数/脚本体中执行您自己的类型检查(例如在Begin{}
块中)。我说过在Param()
块中无法捕捉它。
Param(
[ValidateRange(21,90)]
[int[]]$Age
)