Error handling

Error handling

There are many ways to handle errors in PowerShell, and depending on your situation, one approach may be better than others.

As of PowerShell V2, you can also use ‘Try/Catch’ instead of `trap`. ‘Try/Catch’ is aimed more at developers than administrators, it doesn’t introduce scope as ‘trap’ does, it supports finally and rethrowing of exceptions. As such, it is typically preferable and the examples in this document will focus on `Try/Catch`.

 

A classic example of a try catch statement 

try {   
	#logic
	throw "Error message"
}
catch { 
	exit #optional
}


Example 1

Running the following without installing the necessary cmdlets for SQL Clone.

try {  
    Connect-Sqlclone http://localhost:14145
}
catch {
    exit
}

Example 2

function  log ([string]$msg){                  #logging functionality 
	#logging code, such as email, log to database etc.	For this example, just output it to the console     
	Write-Output($msg)
}

#Create a clone from an existing image
Connect-SqlClone 'http://localhost:14145'
$Image = Get-SqlCloneImage -Name {Image_Name}
$SqlServerInstance = Get-SqlCloneSqlServerInstance -MachineName {Machine_Name} -InstanceName {Instance_Name}
New-SqlClone -Name {New_Clone} -Location $SqlServerInstance -Image $Image | Wait-SqlCloneOperation

#Get the newly created clone
$ClonesToDelete = Get-SqlClone -Name {New_Clone}

try {  
	#Update the clone name to make it fail for this example
	$ClonesToDelete = Get-SqlClone -Name 'A_New_Unique_Name'
	
	#Attempt to delete the clone
	Remove-SqlClone -Clone $ClonesToDelete |
	Wait-SqlCloneOperation
}
catch {
	log $_.exception.message         #send the exception message for logging
    exit                             #terminate the script
}

 

Didn't find what you were looking for?