【问题标题】:$_.Exception is $null when used in a call – why?$_.Exception 在调用中使用时为 $null - 为什么?
【发布时间】:2022-06-22 22:20:32
【问题描述】:

我有一个包含以下日志记录功能的 PowerShell 脚本:

function LogError([string] $message, $exception = $null) {…}

在 try-catch 块中,当发生异常时,我会这样调用该日志记录函数:

catch { LogError("…", $_.Exception) }

LogError 函数中,第二个参数始终是$null。为什么?

我找不到任何文档来解释为什么我不能在函数调用中使用 $_.Exception 或者我应该使用它。

【问题讨论】:

    标签: powershell powershell-7.0 powershell-7.2


    【解决方案1】:

    Powershell 函数参数不使用括号/逗号格式传递。

    这很糟糕

    LogError("…", $_.Exception)
    

    没关系

    LogError '…' $_.Exception
    

    这样最好

     LogError -message '...' -exception $_.Exception
    

    完整的工作示例

    function LogError([string] $message, $exception = $null) {
      Write-Host $message
       $exception | Out-String | Write-Host -ForegroundColor red 
      }
    
    try {
      throw 'Noooo !!!!'
    }
    catch {
      LogError -message 'oops' -exception $_.Exception
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-24
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      相关资源
      最近更新 更多