You can create normal Umbraco pages in your CMS which will be served as error pages. The name must follow the convention [ErrorHandlerKeyword][Error Number], e.g. Error404.
Use the umbracoNaviHide property on your pages to hide them from the nav.
On publish, these pages will be cached to plain HTML files which can be served in case of database problems etc.
Set the SafeIP setting to your public IP.
In the event of server (500) errors, visitors will see your 'Error500' page, while you will see the stack trace.