Error handling – the best practices