无需new()构造函数的Throw异常重载语法及多参数传递方法
PowerShell异常抛出的多参数传递问题
首先明确:PowerShell里throw [<ExceptionClass>] "异常信息"这种简化语法,仅支持传递单个字符串参数,本质是调用该异常类接收单个字符串的构造函数。如果要传递多个参数,这种简化写法做不到,必须用[ExceptionClass]::new()的显式构造语法来指定对应多参数的构造函数重载。
关于你提到的.NET Framework(PS 5.1)和.NET(PS 7)的构造函数差异:确实部分异常类型在不同.NET版本中构造函数签名有调整,但核心是——不管哪个版本,只要需要给异常传递多个参数,就只能放弃简化语法,用显式的构造函数调用方式。
举个实际例子,比如ArgumentException有一个同时接收错误信息和参数名的构造函数:
- 单参数可用简化写法:
throw [ArgumentException] "传入的参数格式错误" - 多参数必须用显式构造:
throw [ArgumentException]::new("传入的参数格式错误", "inputValue")
你遇到的必须用简化语法的场景,大概率是对应异常类型在当前PowerShell版本中,只有单字符串参数的构造函数能被简化语法识别,但只要涉及多参数传递,就只能使用::new()来调用对应的重载。
内容的提问来源于stack exchange,提问作者Paul π
相关产品推荐
相关产品推荐

