In my experience IDEs have the best UIs for dealing with large amounts of errors unobtrusively. An example of a UI for managing large numbers of errors can be found in XCode.
When I build a project with warnings or errors, it lets me know without throwing up massive dialogs in my face:
They're already classified into warnings or errors so I can ignore them if they're just warnings. They're surfaced in the UI in the same place I normally look for progress/status.
I can drill in to inspect them by clicking on the disclosure icon (so when I click the yellow warning icon above. Doing so opens the errors and warnings pane:
Within this view I can choose to see my errors grouped By Type or By File, and I can also filter them with a live search for keywords:
Clicking on an error takes me to the place that the error was found.
I guess the best practice would be to treat the errors the same as any other information you are designing interactions with. You could roll up the errors into a summary, allow the users to drill down, sort and filter them depending what their requirements are regarding inspection of errors, or you could even hide them away completely if the users aren't ever going to care about them (you can always log them and notify someone about them in the background so that you don't interrupt the user), just as you would with any other information that doesn't have relevance to the interaction at hand.