PowerShell: Try...Catch...Finally 實現方法


PowerShell 本身有很多很好的錯誤控制,但是習慣於.net編程的人員,更喜歡用Try Catch Finally方法,尤其當有一段代碼必須被執行到的時候。現在好了,adweigert 想出了一個好方法來實現。這個函數已經在多種情況下測試過,希望能對你有幫助。

 

 1      function Try
 2     {
 3          param
 4         (
 5             [ScriptBlock] $Command = $( throw  " The parameter -Command is required. "),
 6             [ScriptBlock] $Catch   = {  throw  $_ },
 7             [ScriptBlock] $Finally = {}
 8         )
 9        
10         & {
11              $local:ErrorActionPreference =  " SilentlyContinue "
12            
13              trap
14             {
15                  trap
16                 {
17                     & {
18                          trap {  throw  $_ }
19                         & $Finally
20                     }
21                    
22                      throw  $_
23                 }
24                
25                  $_ | & { & $Catch }
26             }
27            
28             & $Command
29         }
30 
31         & {
32              trap {  throw  $_ }
33             & $Finally
34         }
35     }

 

使用示例:

 

     #  Example usage 

    Try {
        echo  "  ::Do some work... "
        echo  "  ::Try divide by zero: $(0/0) "
    } -Catch {
        echo  "   ::Cannot handle the error (will rethrow): $_ "
         # throw $_
    } - Finally {
        echo  "  ::Cleanup resources... "
    }

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM