Check your variables
Get-variable
Check some code
3/0
$error
$stacktrace
Can I continue
$error.clear()
function start-badfunction {
3/0
write-host "Can I continue?"
}
start-badfunction
Non terminating errors, action
$ErrorActionPreference
$ErrorActionPreference | gm
$erroractionpreference = [System.Management.Automation.ActionPreference]::SilentlyContinue
$error.clear()
start-badfunction
$error
$erroractionpreference = [System.Management.Automation.ActionPreference]::Stop
$error.clear()
start-badfunction
$error
more info
get-help about_Preference_Variables
custom error
$erroractionpreference = [System.Management.Automation.ActionPreference]::Continue
$error.clear()
function start-badfunction {
write-error "I'm writing my own errors now"
write-host "Can I continue?"
}
start-badfunction
$erroractionpreference = [System.Management.Automation.ActionPreference]::SilentlyContinue
start-badfunction
throwing stuff
$erroractionpreference = [System.Management.Automation.ActionPreference]::Continue
$error.clear()
function start-badfunction {
throw "I'm a terminating error"
write-host "Can I continue?"
}
start-badfunction
try catch
$erroractionpreference = [System.Management.Automation.ActionPreference]::Continue
$error.clear()
function start-badfunction {
try {
write-error "I'm writing my own errors now"
} catch {
write-host "Caught my own error"
}
try {
3/0
} catch {
write-host "Caught it"
}
write-host "Can I continue?"
}
start-badfunction
$error | % { $_.categoryinfo }
$erroractionpreference = [System.Management.Automation.ActionPreference]::Stop
$error.clear()
function start-badfunction {
try {
write-error "I'm writing my own errors now"
} catch {
write-host "Caught my own error"
}
try {
3/0
} catch {
write-host "Caught it"
}
write-host "Can I continue?"
}
start-badfunction
throwing errors
$erroractionpreference = [System.Management.Automation.ActionPreference]::Continue
$error.clear()
function start-badfunction {
try {
throw "I'm writing my own errors now"
} catch {
write-host "Caught my own error"
}
try {
3/0
} catch {
write-host "Caught it"
}
write-host "Can I continue?"
}
start-badfunction
always do something
$erroractionpreference = [System.Management.Automation.ActionPreference]::Continue
$error.clear()
function start-badfunction {
try {
write-host "Being a good function here"
} catch {
write-host "Caught my own error"
} finally {
write-host "Always execute"
}
try {
3/0
} catch {
write-host "Caught it"
} finally {
write-host "Always execute"
}
write-host "Can I continue?"
}
start-badfunction
Making your real own Exception class and catching them
class MyOwnException : System.Exception {
MyOwnException($error) : base ($error) { }
}
function start-badfunction {
try {
throw [MyOwnException]::new("Throwing my own error")
} catch [MyOwnException] {
write-host "this one I know $_"
} catch {
write-host "unknown error $_"
}
try {
throw "Generic error"
} catch [MyOwnException] {
write-host "this one I know $_"
} catch {
write-host "unknown error $_"
}
}
start-badfunction