Oh, I have quite a bit of similar stuff too. Basically ...
try {
use3rdPartyAPI();
} catch(TypicalErrors e) {
reportErrorToUser(e);
rollbackAnyChanges();
} catch(EverythingElse e) {
// Fuck this undocumented mess of an API
cleanupEverythingICan();
dieLoudly();
}