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

results matching ""

    No results matching ""