defprocess_data(data): try: validate(data) # 可能抛出DataValidationError transform(data) # 可能抛出ValueError except DataValidationError as e: logger.error(f"业务校验失败: {e}") raise APIValidationError from e except ValueError as e: logger.error(f"数据转换异常: {e}") raise ServiceUnavailableError("数据处理服务不可用") from e
上下文保留
使用raise from保持异常链,但要注意信息过滤:
try: conn = create_db_connection() except ConnectionError as e: logger.error("数据库连接失败") # 保留原始异常但转换业务语义 raise ServiceInitializationError("系统初始化失败") from e