You qualified the Try-Finally-Catch "as long as you’re able to handle all of your exceptions in a single trap".
Actually, you can nest the Try-Finally-Catch blocks effectively.
There are a couple of side effects I've learned and I'll blog it in the near future. In short, whenever you use a scriptblock, you effectively creates a scope for variables. As a result, varibales created or changed in a Try Section are unavailable in the Finaly or Catch scriptblocks. This is not a big deal but it might need to be anticipated. Also, this is not a specific effect from Try-Finally-Catch. It happens with all scriptblocks. This is usually managed by "dotting" the script. I just haven't found a way to work it into the Try-Finally-Catch commandlet.