This is a developmental phase. You should be directing him and telling him to stop throwing the things that are not for throwing. Tell him, redirect, and don't give him that thing back if he cannot stop. It kind of sounds like he has way too many things to choose from. I would limit him to a toy or two, that way, if he throws them away, he is out of luck, and he has to make a choice, throw them away, or have something to play with. Take him outside to throw balls, tell them that it is the right place and time. He will get it some day. Right now, it is only a game if you keep getting his things back and letting him do it again.
As for food, you can stop that in an few days. Tell him not to, and when he does it, tell him that he is done. Take him out of the chair, and meal time is over if he drops food. Stand your ground. If he can manipulate you into putting him back in the chair, the first thing he will do will be to try you again and drop some more food. You are teaching him two things, and neither one is really throwing food. You are teaching him that he can get away with things you say no to, and that he can manipulate you. You don't want either one. Be firm, and it will stop. He sounds really smart to me. It will probably only take once...
M.
PS: You don't need to reason with a child. He does what you say, and the reason is, you said so. My oldest is almost 19, there is still no reasoning with her. Let that go!