1

在 powershell 中,在某些条件下,我这样做:

throw [System.Management.Automation.MethodException]

后来我有这样的收获:

catch [System.Management.Automation.MethodException]
{

catch
{

我的代码属于第二个(一般)捕获。当我在第二个捕获中查看 $_.Exception 时,它显示“System.Management.Automation.MethodException” - 那么为什么 Powershell 在第一个捕获中没有捕获它?我怎样才能解决这个问题?

谢谢,彼得

4

1 回答 1

1

PetSerAl 在评论中说得对;你需要创建一个类的实例MethodException

他的建议很好,很简洁:

throw [System.Management.Automation.MethodException]::new()

但它仅适用于 PowerShell 5+。在早期版本中:

$ex = New-Object -TypeName System.Management.Automation.MethodException
throw $ex

或者,在包含消息的同时在任何版本中使用它的一种简单方法是将 a 强制转换[String]为异常:

throw [System.Management.Automation.MethodException]"You messed up."
于 2016-08-26T21:55:37.337 回答