2010-02-02 35 views
125

Đây là try catch trong PowerShell 2,0PowerShell 2.0 cố gắng nắm bắt như thế nào để truy cập ngoại lệ

$urls = "http://www.google.com", "http://none.greenjump.nl", "http://www.nu.nl" 
$wc = New-Object System.Net.WebClient 

foreach($url in $urls) 
{ 
    try 
    { 
     $url 
     $result=$wc.DownloadString($url) 
    } 
    catch [System.Net.WebException] 
    { 
     [void]$fails.Add("url webfailed $url") 
    } 
} 

nhưng những gì tôi muốn làm là một cái gì đó giống như trong C#

catch(WebException ex) 
{ 
    Log(ex.ToString()); 
} 

Đây có phải là có thể?

Trả lời

178

Hãy thử một cái gì đó như thế này:

try { 
    $w = New-Object net.WebClient 
    $d = $w.downloadString('http://foo') 
} 
catch [Net.WebException] { 
    Write-Host $_.Exception.ToString() 
} 

Trường hợp ngoại lệ là trong biến $_. Bạn có thể khám phá $_ như thế này:

try { 
    $w = New-Object net.WebClient 
    $d = $w.downloadString('http://foo') 
} 
catch [Net.WebException] { 
    $_ | fl * -Force 
} 

Tôi nghĩ rằng nó sẽ cung cấp cho bạn tất cả thông tin bạn cần.

Quy tắc của tôi: nếu có một số dữ liệu không được hiển thị, hãy thử sử dụng -force.

Các vấn đề liên quan