Well it seems I have stumbled onto a fix...
Previously the Error.pm was pulled in by one of my modules (myExceptions), which was pulled in by another module, that was pulled into the one running the code. Apparently that we too many levels or something, somehow (since it works in some cases not in others). But when I directly pulled in myExceptions in the module doing the code, it started working.
All said and done, this is better coding this way anyway...
So thanks for all the help... the otherwise clause does indeed work the way we thought... and all is well (well the script still doesn't work, but this isn't the reason why... :) )