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..."
    }

 

 

 

 

相关文章:

  • 2021-07-14
  • 2021-12-04
  • 2022-01-31
  • 2021-10-19
猜你喜欢
  • 2022-12-23
  • 2021-12-11
  • 2022-01-18
  • 2021-10-20
相关资源
相似解决方案