【发布时间】:2019-09-27 11:49:40
【问题描述】:
Param(
[ValidateRange(21,90)]
[int[]]$Age
)
$age 超出范围时如何捕获异常?
【问题讨论】:
-
参数验证的异常必须被调用者捕获。它不能被
Param()块捕获。这会破坏参数验证的目的。 -
如果我无法捕获异常,那么 [ValidateRange] 的主要目的是什么?
-
保存exceptional situations 的例外情况。一般预计用户会提供不合适的参数值。
[citation needed] -
目的是确保脚本或函数仅在参数接收到有效值时运行,否则不运行。如果您希望参数接受任何内容并处理您自己获得的任何值:不要使用参数验证。在函数/脚本主体中进行自己的类型检查(例如在
Begin {}块中)。 -
此外,我并没有说你不能捕捉到异常。我说你不能在
Param()块中抓住它。