Throwing exceptions from destructor was always a bad idea, but in C++11 would always call the program termination (so no stack unwinding and stuff).
Why a simple try catch with a message print?
I don't know the format it is writing into, but i kind of doubt that the error will be recoverable.
The question is, does it make sense to output something with broken parts? And if it does, what happens if we then try to seek to skip the failed write but the seek fails too?
I would expect that if the first write failed, every other operation on that file would fail (especially looking at what psdwrite does).
So this is here as a reminder of the little issue.