I would think that the only way to fix it is to take a look at which boolean expression you're using and what is hanging it up in the complex object, though I'm sure that would be time consuming.
I used to do this, and it works. I perform the boolean and it doesn't work properly, I take note of the problem area, undo the boolean, and tweak the area(s) prior to the boolean and that typically works after some effort. Alas, I have much more efficient methods now. Procedurally speaking I like to keep my boolean commands to a minimum after I add complexity to my objects. Instead I find it easier, for unions of complex objects anyway, to simply attach and weld manually. Works exactly how I want it every time.

Do you use a graphics program?
"George Bush says he speaks to god every day, and christians love him for it. If George Bush said he spoke to god through his hair dryer, they would think he was mad. I fail to see how the addition of a hair dryer makes it any more absurd."