140

如何在 PowerShell 中创建和引发新异常?

我想为特定的错误做不同的事情。

4

2 回答 2

213

要调用特定异常,例如 FileNotFoundException,请使用此格式

if (-not (Test-Path $file)) 
{
    throw [System.IO.FileNotFoundException] "$file not found."
}

要抛出一般异常,请使用 throw 命令后跟一个字符串。

throw "Error trying to do a task"

在 catch 中使用时,您可以提供有关触发错误的其他信息

于 2014-07-04T23:05:27.423 回答
3

您可以通过扩展 Exception 类来抛出您自己的自定义错误。

class CustomException : Exception {
    [string] $additionalData

    CustomException($Message, $additionalData) : base($Message) {
        $this.additionalData = $additionalData
    }
}

try {
    throw [CustomException]::new('Error message', 'Extra data')
} catch [CustomException] {
    # NOTE: To access your custom exception you must use $_.Exception
    Write-Output $_.Exception.additionalData

    # This will produce the error message: Didn't catch it the second time
    throw [CustomException]::new("Didn't catch it the second time", 'Extra data')
}
于 2021-02-24T10:50:34.320 回答