One thing that has worked with my son is that, unless he is overwhelmed, he doesn't get a time out. He can't just walk away from his carnage. He has to deal with it. With help, of course. So apologising and giving a cuddle. Including to the toy he "hurt" by throwing it. And I won't play if he hurts me either.

We do have time outs and time ins, as appropriate. DH is fond of using time out as a way of just getting DS out the way for an hour, but I tend to sit him down and tell him when he's calm and ready to apologise/play nicely then he can tell me and we'll go again. Sometimes he's happy to just sit on a chair and make up a story: he is actually happy to sit on time out, not want to come off the seat and will tell me all about his story when he's calm again.