The try/catch block is a staple of error handling.  In PowerShell, one common anti-pattern I see in try/catch blocks is the use of $error[0].

If you are not familiar with $error, it’s an automatic variable that contains all the error records from the session.  It’s a stack, so the last error that occurred is in $error[0].

I’ve recently seen some public scripts that use $error[0] in the catch block

So what happens if DoSomeLoggingOfContext throws or writes an error?  $error will reflect the last error (terminating or non-terminating), so my LogError will be logging the wrong error and the terminating error I caught is lost.

A better option is to use $_ to represent the caught exception.

This ensures that you are referencing the caught error and not just whatever was last on the stack.  

Happy Error Handling!