Error handling by example. Architectural decisions for error handling in enterprise ready systems.