S.M.
The best thing to do is just take away his meal and make him leave the table immediately. "Throw food, all done!!" Plop him on the floor "No throwing, bye-bye."
Kids usually throw when they get bored with the meal, and so it's good to be preemptive. Don't let him sit there endlessly until he gets so frustrated that he throws. A toddler can't sit through a whole adult meal.
At first my daughter usually doesn't care if I dismiss her from the table. But after a few minutes, she wants back at the table. I say, "No throwing" and we try again. Kids will eat if they are hungry, so I wouldn't worry about feeding him enough. This worked really well with both my kids (5 years and 19 months) and after a few days/weeks the behavior stopped.
However, I currently need to increase my daughter's food intake because the doctor is concerned about her weight. I refuse to give in to her not wanting to eat what I make. However, since I worry about her weight in particular, I have started feeding dinner her a little earlier. Whether she eats our family dinner or not, I usuallly give her a bedtime snack after an hour or so of something I know she likes like yogurt. That way, I don't feel like I am letting her dicate the meals, but I know she is getting the calories she needs. I don't think you need to do that with an average kid though. If he is healthy, he will eat when he is hungry.
Oh, and by the way... make him get out and clean it up. Don't let it be a game. But I found tha thelps too.