创建和引发新异常

如何在 PowerShell 中创建和抛出新异常?

我想针对特定的错误执行不同的操作。

160357 次浏览

若要调用特定异常(如 FileNotFoundException) ,请使用此格式

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

若要引发常规异常,请使用 throw 命令后跟字符串。

throw "Error trying to do a task"

当在 catch 内部使用时,可以提供有关是什么触发了错误的附加信息

可以通过扩展 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')
}