For some reason my script is not catching the exception when I run the following script against a file that does not exist. I based this code from examples I found on the web but it doesn’t seem to work for me.
I would appreciate any tips or pointers on how to fix this.
Note: in the example below I’ve also tried
trap [Exception] {
but that didn’t work either.
Here’s the script:
function CheckFile($f) {
trap {
write-host "file not found, skipping".
continue
}
$modtime = (Get-ItemProperty $f).LastWriteTime
write-host "if file not found then shouldn't see this"
}
write-host "checking a file that does not exist"
CheckFile("C:\NotAFile")
write-host "done."
output:
PS > .\testexception.ps1
checking a file that does not exist
Get-ItemProperty : Cannot find path 'C:\NotAFile' because it does not exist.
At C:\Users\dleclair\Documents\Visual Studio 2010\lib\testexception.ps1:12 char:35
+ $modtime = (Get-ItemProperty <<<< $f).LastWriteTime
+ CategoryInfo : ObjectNotFound: (C:\NotAFile:String) [Get-ItemProperty], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand
if file not found then shouldn't see this
done.
PS >
Try like this:
Based on comments from OP:
I think you misunderstood what is being said in the article you have linked to:
So if you do something like this:
afterwill be printed.But if you do something like this:
afterwill NOT be printed, butoutside afterwill be.Alternatively, use a try-catch block: