Skip to content

Latest commit

 

History

History
64 lines (60 loc) · 1.13 KB

PowerShell Exception Handling.md

File metadata and controls

64 lines (60 loc) · 1.13 KB
try {
    # ...
} catch {
    Write-Exception $_
    throw;
} finally {
    # ...
}

Example Write-Exception Function

function Write-Exception
{
  param
  (
    [Parameter(Mandatory=$true, Position=0)]
    $thisError
  )
  process
  {
    [System.Text.StringBuilder]$builder = New-Object -TypeName "System.Text.StringBuilder"; 
    $builder.AppendLine($thisError.Exception);
    $builder.AppendLine($thisError.Exception.StackTrace);
    $builder.AppendLine("at line $($thisError.InvocationInfo.ScriptLineNumber) char $($thisError.InvocationInfo.OffsetInLine)");
    $builder.AppendLine($thisError.InvocationInfo.Line);
    $builder.AppendLine($thisError.InvocationInfo.ScriptName);
    Write-Error $builder.ToString();
  }
}

Consider PoShLog for logging.

Error trapping

function Do-Something
{
    param
    (
        [Parameter()]
        [string]$foo
    )
    trap [Exception]
    {
        Write-Exception $_;
        Continue; # Break
    }
    begin
    {
        # ...
    }
    process
    {
        # ...
    }
    end
    {
        # ...
    }
}