Mikko,
I think I was able to track this down. It’s silly I didn’t think of this. The first thing you can do is to cancel the default drawing with e.Cancel = true. This causes the DrawExceptionCore not to be called so it should not write what you were seeing. Another point is I was looking into the code on how we draw the exception and I see that we were using the DrawingLevel.LabelLevel. In our drawing system we have a number of levels and the label level is always on top. The code I sent before was drawing on level one and then the DrawExceptionCore was drawing on top of that even though we thought we cleared the canvas. I think that you would not even have to cancel it if you drew on the LabelLevel in the DrawnException event.
This should apply to all of the overlays you were talking about because this is being drawn in a TileOverlay which they inherit from.
private void WmsOverlay_DrawingException(object sender, DrawingExceptionTileOverlayEventArgs e)
{
e.Cancel = true;
e.Canvas.DrawArea(e.Canvas.CurrentWorldExtent, GeoBrushes.White, DrawingLevel.LabelLevel);
e.Canvas.DrawText("Error", new GeoFont("Arial", 20, DrawingFontStyles.Bold), GeoBrushes.Black, new ScreenPointF[] { new ScreenPointF(e.Canvas.Width / 2, e.Canvas.Height / 2) }, DrawingLevel.LabelLevel);
}