Raising errors
When writing a script, it may be desirable to use errors to notify someone running the script of a problem. The severity of the problem might dictate whether an error is non-terminating or terminating.
If a script makes a single change to a large number of 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, 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 a number of fields that are useful for diagnosing an error. An ErrorRecord can be explored using Get-Member. For example, an ErrorRecord will be generated when attempting to divide by 0:
100 / 0 $record = $Error[0]
The ErrorRecord that was generated includes a ScriptStackTrace:
PS> $record.ScriptStackTrace at <ScriptBlock>, <No file>: line 1 As well as...