I think a lot of people are prone to take out their frustrations on other people when they did nothing wrong, even if it's just snapping at you over an innocent question. I'm guilty of having done it on occassion, and so is my husband. I think my husband has done this more than I have though, and when it does happen I talk to him about it when it gets bad. I don't mind if he snaps at me once when he is clearly frustrated over an outside issue, but if it continues, I sit him down and have a serious conversation.
When I do talk to him about it, I keep my voice low and calm so the situation isn't made worse. I let him know that I don't appreciate being yelled at when I have done nothing wrong, and that it hurts my feelings (keeping the "you" statements out typically helps). He knows this now, and while he works hard to not take out his frustrations on me, he apologizes when he does. I don't like it when he does these things, but we are both human and it is bound to happen sometimes.
What do you mean by "I tell him like it is"? Is it nicely telling him that you don't appreciate being yelled at, or is it something else? It may just be the delivery of how you are telling him, but I'm just speculating, not accusing you of doing something wrong.
However, throwing objects is unacceptable. He needs to know that is not okay, and if he is so angry that he feels he needs to throw or hit something, he needs to just go punch a pillow.