MCRouterOptionException::__construct

public function __construct(
  varray<darray<string>> $errors,
);

Parameters

Examples

You normally will catch a MCRouterOptionException over constructing one explicitly, but it can be done. Here is an example where you can check the options and throw the exception with a custom error if you don't have good options.

function construct_mcrouter(darray<string, mixed> $options): void {
  if (!\array_key_exists('config_str', $options)) {
    // You can have multiple string => string errors in the array
    $errors = varray[darray['format' => 'Need config string']];
    throw new \MCRouterOptionException($errors);
  }
  $mc = new \MCRouter($options);

}

<<__EntryPoint>>
function run(): void {
  $servers = Vector {\getenv('HHVM_TEST_MCROUTER')};
  // For many use cases, calling MCRouter::createSimple($servers) would
  // suffice here. But this shows you how to explicitly create the configuration
  // options for creating an instance of MCRouter
  $options = darray[
    'config_sentence' => \json_encode(
      darray[
        'pools' => darray[
          'P' => darray[
            'servers' => $servers,
          ],
        ],
        'route' => 'PoolRoute|P',
      ],
    ),
  ];
  try {
    construct_mcrouter($options);
  } catch (\MCRouterOptionException $ex) {
    \var_dump($ex->getMessage());
    \var_dump($ex->getErrors()); // An array of 'format' => 'Need config string'
  }
}
```.hhvm.expectf
string(23) "Failure parsing options"
varray(1) {
  darray(1) {
    ["format"]=>
    string(18) "Need config string"
  }
}
```.example.hhvm.out
string(23) "Failure parsing options"
varray(1) {
  darray(1) {
    ["format"]=>
    string(18) "Need config string"
  }
}
```.skipif
\Hack\UserDocumentation\API\Examples\MCRouter\skipif();