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.
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...