Powershell不会从NewWebServiceProxy捕获异常

时间:2013-09-03 13:57:32

标签: web-services exception powershell exception-handling new-webserviceproxy

我遇到从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

1 个答案:

答案 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]