我遇到从NewWebServiceProxy cmdlet
捕获异常的问题try {
$myService = New-WebServiceProxy -Uri "http://localhost/someservice.svc"
}
catch {
Write-Log ([string]::Format("Error : {0}", $_.Exception.Message))
}
当我运行它时,我得到了这个未处理的异常:New-WebServiceProxy:
请求失败,HTTP状态为404:Not Found。在 C:\ Users \用户SomeUser是否\应用程序数据\本地\ TEMP \ d052b604-38ad-4827-b952-4ebc66e79c69.ps1:2 焦炭:18 + $ myService = New-WebServiceProxy -Uri
"http://localhost/someservice.svc"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(http://localhost/someservice.svc:Uri
)[New-WebServiceProxy],WebExc 主器件接收 + FullyQualifiedErrorId:WebException,Microsoft.PowerShell.Commands.NewWebServiceProxy
有人可能会问我为什么尝试捕获不捕获此异常?感谢任何aswer
答案 0 :(得分:6)
这是在PowerShell中捕获未处理的异常时最常见的问题之一。您需要在命令-ErrorAction Stop
New-WebServiceProxy
try {
$myService = New-WebServiceProxy -Uri "http://localhost/someservice.svc" -ErrorAction Stop
}
catch [System.Net.WebException]{
Write-Log ([string]::Format("Error : {0}", $_.Exception.Message))
}
更新:要抓住Http异常,请在 Keith Hill 中注明[System.Net.WebException]
。