You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需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 π

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:22:37