self-defined exception should inherit from StandardError