Catch - PowerShell


The Catch command in PowerShell allows you to handle exceptions and errors that occur within a script. It’s essential for capturing and managing exceptions in an organized and controlled manner.


Catch [-ExceptionType] <String> [-WarningAction] <WarningAction>
Catch -All
Catch -Default


  • -ExceptionType : Specifies the specific exception type to catch.
  • -WarningAction : Controls how warnings are handled. Default: Continue.
  • -All: Catches all exceptions including non-terminating errors.
  • -Default: Catches all terminating errors.


Example 1: Catching a specific exception type:

try {
    $result = Get-Item "non-existent.txt"
} catch [System.IO.FileNotFoundException] {
    Write-Host "File not found. Continuing..."

Example 2: Catching all exceptions:

try {
    $result = Get-Item "non-existent.txt"
} catch -All {
    Write-Host "An error occurred. Continuing..."

Example 3: Suppressing warnings:

try {
    Get-ChildItem -Path "non-existent.txt" -ErrorAction SilentlyContinue
} catch -Default {
    Write-Error "An error occurred."

Common Issues

  • Exception not caught: Ensure the -ExceptionType parameter aligns with the expected exception type.
  • Excessive warning suppression: Use -WarningAction cautiously to avoid suppressing critical warnings.


Using Catch with Throw:

Throw -Error "MyError"
Catch -Default {
    Write-Error "Error handling code for custom error."

Combining Catch with other commands:

Get-ChildItem -ErrorAction Stop | Catch -Default {
    Write-Error "Error handling code for stopped command."
  • Try
  • Throw
  • ErrorAction