On my Machine each one of the following code snippets throws and exception instead of printing to the standard output "1" and "2" Why the exception is not being Caught?
try {
[int]$a = 1/0
}
catch {
write 1
}
finally {
write 2
}
try {
[int]$a = 1/0
}
catch [System.Exception] {
write 1
}
finally {
write 2
}
RuntimeException in v2 are not catchable. It has been fixed in v3.
Dividing by zero falls into this category.
As you are using constants, the interpreter tries to precompute the result and fails with a division by zero error. Your code does not even get executed so there's nothing to trap.
You can verify this for yourself by changing your code to use variables, forcing it to be executed.
From Windows PowerShell in Action (p.257)
You can try to throw an exception with that kind of line :
trap { "Your Exception" } 1/0
This will throw the exception "divide by 0". Though I don't really understand why your code doesn't throw an exception ._.
PS : Isn't that supposed to be
catch [System.SystemException]
? :)