about exceptions and patterns