Если нет возможности отловить исключения, выданные из оператора param (а поскольку param должен быть первым, я не вижу, чтобы это работало):
function {
trap { "Something failed" }
param($foo = $(throw "Foo not specified"))
...
Тогда я не вижу пути (вы получаете то же самое с параметрами [switch]: по умолчанию или явно -mySwitch:$false
).