Since you use constants ,, the interpreter tries to precompile the result with a division by zero error. Your code doesn't even execute, so you have nothing to catch.
You can verify this yourself by changing your code to use variables, forcing it to execute.
try {
$divisor = 0
[int]$a = 1/$divisor
}
catch {
write 1
}
finally {
write 2
}
From Windows PowerShell in action (p. 257)
1/$null. 1/0 - , PowerShell -, .
, . , , .
, , , . , theyre , . ( script script script , script , script .)