I think that it's fine to have the method on the Application class. You need to extend it anyway, so overriding onRuntimeException is very easy to do. And I do think it does belong there, because it knows how to create the homepage, I think it's logical that it also knows how to create an error page.
For the system I'm working on, I assign a unique id to every request cycle, which serves as an error ticked id once an exception occurs. It feelts natural to assign that in the request cycle, and I believe it feels just as natural to put the related error handling in the request cycle. Application is meant for settings and factories, and imho, a request related error call back would just be wrongly scoped when put in the application class.
Do you mean you want to remove all those factory interfaces for simple factory methods on Application?
That would be my ideal, yes. Eelco
