As far as possible, correct mistakes anonymously. Do this by making notes of students' mistakes as you monitor (see TT10 for further explanation) then putting them on the board later and give the students themselves the opportunity to correct them, in pairs or small groups. If no one knows the right answer, give it to them, but only as a last resort. Anonymous error correction is a kind way to deal with mistakes. It isn't important who made the mistake originally - the point is, can the students all correct it? I tend to doctor the mistakes so that even the perpetrator doesn't recognise them as his/her own. For example:
Original error: "I have been to Paris last year." = On the board: "I have been to London last week."
Mistakes are good things and students need to know that they are. I explain like this: "Please make lots and lots of mistakes in my lessons - new mistakes, mind you, not the same old ones over and over. I like mistakes because we can all learn from them and because if you don't make any I won't have a job. If I find a student who doesn't make any mistakes in my lesson I will move that student to a higher level class because s/he obviously isn't learning anything at this level."
Learning English is like learning to ride a bike - you fall off a lot, but you get the hang of it in the end. You will make a lot of mistakes but you will be able to communicate effectively in the end. Very few people become successful international cyclists and the chances are that even though you can ride a bike you are not a professional cyclist. Very few students reach mother-tongue (supposedly error-free) level but many students learn to communicate very well in English in spite of this. You will probably never have error-free English so accept that you will always make some mistakes - just try to learn from them and learn to live with your linguistic imperfections.
When a student makes a mistake it is usually counter-productive to say "No!"/"That's wrong!"/"Are you serious?"/"How long did you say you've been studying English?" etc. It's often kinder to say "Not bad"/"Nearly"/"Good try"/"That's an interesting mistake" etc.
Some say that you shouldn't laugh at students' mistakes but I often do. They're often very funny so why shouldn't I? I find it breaks the "mistakes taboo" and makes linguistic risks and disasters an acceptable part of the classroom culture. Students catch on very quickly and we have a good giggle together when someone messes up.
The ability to correct themselves when they make a mistake is an important one for students to develop. Encourage it and give them time to correct themselves - don't jump in immediately to correct them, keen though you are to prove that you are doing your job. Most students (and indeed some teachers) seem to think that it is the teacher's job to correct students mistakes but this is not necessarily so. Yes, teachers can correct their students endlessly but how will that help the students' when they go out into the big wide world - who will be there to correct them then?
It's much better for the students if they get into the habit of listening to themselves when they are speaking and correct themselves as they go along. Obviously they won't be able to correct all the mistakes they make but they will be able to correct a lot of them.