Dealing with errors with PowerShell try-catch command

Have you ever ever seen an utility crash? If that’s the case, you understand how irritating it will possibly get and should you’re a programmer, you’ll most likely be cursing the developer for not placing in the appropriate error dealing with mechanism in it! And that’s precisely what this piece is all about. Error dealing with is an integral a part of an utility’s code because it catches unexpected errors and ensures that the appliance is terminated safely. As with most programming languages, PowerShell additionally helps an error dealing with mechanism known as try-catch, however earlier than that, let’s be taught a bit about error handling in PowerShell.

Why do you want error dealing with?

exchange errors

A fairly fundamental query that the majority of it’s possible you’ll already know. Nonetheless, let’s briefly contact on it to reiterate some essential factors.

Error dealing with helps within the following methods.

  • Prevents an utility from crashing.
  • Makes it simple for the consumer to know that one thing is incorrect and that they need to contact the help crew.
  • Gives particulars in regards to the error and its attainable causes.
  • Helps with additional evaluation and to repair the issues.
  • Provides the choice to customise the error messages despatched to end-users.
  • Makes it simple to take care of your code.
  • Your program might proceed to work even after the error, relying on the error and your code.
  • Thought-about to be programming follow.

Now that we’ve touched on the advantages of error dealing with, let’s see how it may be applied in PowerShell.

Error dealing with in PowerShell

502 error

Broadly talking, there are two kinds of errors and they’re: terminating and non-terminating errors.

Terminating and non-terminating errors

Because the title suggests, terminating errors are these which are essential and terminate this system abruptly whereas non-terminating errors enable this system to run however can provide the incorrect output or generally, even drastic outcomes. Now should you’re questioning, non-terminating errors are doubtlessly extra harmful than terminating errors since you don’t know what points can get modified.

Some attainable terminating errors are out of reminiscence and syntax errors whereas the massive a part of errors in programming logic and surprising errors fall within the non-terminating class.

Changing non-terminating errors to terminating errors

As a programmer, you possibly can inform PowerShell to deal with the non-terminating errors as terminating errors, so this system stops if it encounters that individual error. This modification lets you deal with the error utilizing the PowerShell try-catch block as a result of by default non-terminating errors can’t be dealt with with the try-catch block.

To transform non-terminating errors into terminating errors, use a parameter known as ErrorAction. Each cmdlet helps this parameter and it’s designed to inform this system what motion it ought to take when it encounters an error. ErrorAction comes with the next choices

  • Cease: This stops this system and treats it as a terminating error.
  • Proceed: Permits this system to proceed and the error is displayed.
  • SilentlyContinue: This system runs and no errors are displayed.
  • Ignore: Ignores the error and continues.
  • Inquire: Shows the error and checks if it ought to proceed.
  • Droop: This can be utilized in a Home windows PowerShell workflow. The limitation is that it will possibly’t droop superior features.

The syntax for ErrorAction is:

$variable = Get:content material consumer.txt:ErrorAction Cease

This command modifications a non-terminating error right into a terminating one, so you possibly can deal with it.

Constructing a try-catch block

Upon getting a terminating error or have transformed a non-terminating one to a terminating error, you possibly can deal with it utilizing PowerShell try-catch block.

The generic syntax is:



If there's an error, deal with it this fashion

For instance,


On this instance, knowledge from the file is saved in $variable and if there’s an error, the code will get to the catch block and shows the message. The above instance is a fundamental one, designed to offer you an concept of the syntax and use. In the actual world although, you’ll use this PowerShell try-catch block to get insights in regards to the error and take motion accordingly.

Sensible purposes of PowerShell try-catch block

powershell function


You’ll be able to entry the error document contained in the catch block. Actually, the error message is saved within the present variable $_. You are able to do something with this error document equivalent to parse the error, show a warning, and extra. A robust attribute of the present variable is the Exception as the thought is to know extra in regards to the surprising occasions that triggered this system to cease. Additionally, Exception itself comes with many attributes like ItemName, GetType, Message, and so forth.,

For instance:



Now that the fundamentals are clear, let’s transfer to the superior half.

You should utilize the catch block to catch particular exceptions, offered or anticipate them. For instance, let’s say you desire a particular message to be displayed if the file isn’t discovered and different messages for different exceptions, your code ought to seem like this:


catch [System.Management.Automation.ItemNotFoundException]


Some factors to contemplate when utilizing try-catch

Remember the next factors whereas utilizing the PowerShell try-catch block.

  • There must be no code between the terminating braces of the strive block and the catch command. In different phrases, the phrase “catch” ought to instantly be within the subsequent line after the closing braces of the strive block
  • This PowerShell try-catch block is most helpful to deal with errors that you simply anticipate can occur in this system.
  • The catch block will catch any exception thrown contained in the strive block no matter its origin.
  • PowerShell try-catch command is a handy various to a number of if statements.
  • The strive block could be adopted by any variety of catch blocks, however they need to be consecutive with no different code in-between.

Lastly block

There’s something known as a lastly block that you should utilize with try-catch. That is an elective one and doesn’t have for use always. This block will execute the code talked about inside it no matter whether or not there was an error or not. This block ought to come proper after the closing braces of the final catch block.

For instance:


catch [System.Management.Automation.ItemNotFoundException]


 out:file logfile.log:append

Within the above instance, an entry will likely be appended within the log file each time an try is made to entry the file, no matter whether or not the file was discovered or not.

Strive-catch: Strive it out and avert crashes

Error dealing with is a crucial a part of any program because it prevents the appliance from crashing and lets you analyze the attainable reason behind the error. PowerShell try-catch block is a strong approach to seize terminating errors, so you possibly can deal with them safely with out inflicting a crash. It helps with the detailed evaluation and an understanding of the issue as effectively. For these causes, it’s a must-have in your PowerShell scripts.

Submit Views:

Extra PowerShell Fundamentals articles

Learn Subsequent

About the Author

Leave a Reply

Your email address will not be published. Required fields are marked *