使用函数进行PowerShell错误处理

这是我想的最佳实践问题。使用函数进行PowerShell错误处理

在设计将在脚本中使用的函数时,处理函数中可能发生的错误的最佳方法是什么?

例如,假设我们有做X和Y基本功能:

Function Test-Function 

{

Try

{

<# Something in here that would generate an error #>

}

Catch

{

Throw

}

Return $someReturnResultIWantInMyScript

}

我的脚本调用此函数:

Try 

{

$ValueIWantFromFunction = Test-Function

}

Catch

{

<# Do something here #>

}

如果Test-Function命中终止错误,它会抛出给来电者。围绕脚本中的函数调用的Try/Catch将收到此错误并触发它自己的捕获。然后我可以决定做什么。

如果我没有在函数中抛出错误,脚本不会看到终止错误,然后我的$ValueIWantFromFunction可能包含$Null或其他没有用的东西。

这是一个错误处理与脚本内的函数和函数调用的好方法吗?有没有更好的办法?

回答:

作为一个最佳实践,我喜欢使用异常来处理函数/脚本中的错误并将它们记录下来,以便调用者知道哪里出了问题。例如:

Function Remove-File 

{

[CmdletBinding()]

[OutputType([Int])]

Param(

[Parameter(Mandatory)]

[String]$Path

)

Try

{

Remove-Item -Path $Path

Return 0

}

Catch

{

Return 1

}

}

如果我设计我自己的函数/ cmdlet时,我会生成自定义​​对象抛出:

#Requires -Version 5 

If ($ErrorCondition)

{

$PSCmdlet.ThrowTerminatingError(

[System.Management.Automation.ErrorRecord]::new(

[System.Exception]::new('Error message'),

'FullyQualifiedName',

[System.Management.Automation.ErrorCategory]::DeviceError,

$ErrorCausingObject

)

)

}

使用这种方法,我可以包括在文档中根据错误发生哪些错误会被抛出,因此调用者可以根据抛出的错误利用多个捕获并处理它。

这里有一些不错的文章:
Everything about exceptions
Scripting Guy: Handling errors
On the OutputType attribute

以上是 使用函数进行PowerShell错误处理 的全部内容, 来源链接: utcz.com/qa/257174.html

回到顶部