I´m searching for the best way to handling exceptions in PowerShell. In the following example I want to create a new SharePoint web and remove a old SharePoint web. When the New-SPWeb fails, it is necessary that the script ends. I think try/catch is the best way, because the "if" statement only checks if $a exists. Are there still other options to handling exceptions?
Exception handling with "if" statement:
$a = New-SPWeb http://newspweb
if($a -eq $null)
{
Write-Error "Error!"
Exit
}
Write-Host "No Error!"
Remove-SPWeb http://oldspweb
With try/catch:
try
{
$a = New-SPWeb http://newspweb
}
catch
{
Write-Error "Error!"
Exit
}
Write-Host "No Error!"
Remove-SPWeb http://oldspweb
Try/catch is really for handling terminating errors and continuing on. It sounds like you want to stop on a non-terminating error. If that's the case, use the ErrorAction
parameter on New-SPWeb
and set it to Stop
e.g.:
$a = New-SPWeb http://newspweb -ErrorAction Stop
This will convert the non-terminating error into a terminating error.
Try catch is certainly the right way. But, it will catch only terminating errors. So, if New-SPWeb
does not throw a terminating error, you can never catch it. I guess, it results in a terminating error.
BTW, if you want all details about the error, output $_
in catch {}.
It will have all error information.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With