我有一些基本的内容
C:\脚本\ LIB \网络\ web.ps1
C:\脚本\任务\任务1 \ task1.ps1
其中task1.ps1类似于
. .\Lib\Web\web.ps1
Load-Url "http://server" "username" "password"
和web.ps1看起来像
function Load-URL([string] $url, [string] $username, [string] $password)
{
$pwd = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object Management.Automation.PSCredential ($username, $pwd)
$result = irm $url -cred $cred
return $result
}
任何尝试 / 捕获对于可能从 irm 调用中掉出来的异常是加载URL函数或者调用者task1.ps1?我将它作为调用者的关注点,以便它可以决定异常在其上下文中的含义。它可能想要记录或做一些完全不同的事情。对此有何看法?
答案 0 :(得分:0)
Load-Url
可能会更好地理解如何处理Invoke-RestMethod
引发的某些异常。如果Load-Url
可以通过增加价值的方式处理其中某些内容,那么您应try/catch
Load-Url
,并处理这些特定异常。
有时,针对多种情况抛出相同的异常类,您必须检查catch
块中的异常对象。如果是这种情况,并且您不想处理其中的一些异常,那么您可以重新throw
例外:
try {
Invoke-RestMethod #arguments
} catch [Some.Generic.Net.Exception] {
if ($_.Message -like '*Authentication*') {
# Fix the issue here
} else {
throw $_
}
}
然后,当调用者在try / catch中调用Load-Url
的调用时,它将能够捕获函数未处理的任何异常。