Because most cmdlets don't generate a trappable, terminating exception by default. See "The Big Book of PowerShell Error Handling" (free, Resources menu here to find the ebooks). Essentially, you need to probably add the -ErrorAction parameter.
Some cmdlets also *never* generate a trappable, terminating exception. That's in the cmdlet design, and there's not much you can do about it.