Raising errors
When writing a script, it may be desirable to use errors to notify the person running the script of a problem. The severity of the problem will dictate whether an error is non-terminating or terminating.
If a script makes a single change to many diverse, unrelated objects, a terminating error might be frustrating for anyone using the script.
On the other hand, if a script fails to read a critical configuration file or fails some advanced parameter validation, a terminating error is likely the right choice.
Error records
When an error is raised in PowerShell, an ErrorRecord object is created (explicitly or implicitly).
An ErrorRecord object contains several fields that are useful for diagnosing an error. ErrorRecord can be explored by using the Get-Member or the Get-Error command.
For example, an ErrorRecord will be generated when attempting to divide by 0:
100 / 0
$record = $Error[0]
The ErrorRecord object that was generated has a ScriptStackTrace...