public final function applies()
{
try {
if ($this->shouldReturnCache()) {
return $this->getCache();
}
$this->clearResult();
$this->clearCache();
$result = $this->_applies();
if (is_bool($result)) {
$this->setCache($result);
return $result;
} else {
throw new Exception('A rule must return a boolean.', Exception::CODE_NONBOOLEAN);
}
} catch (Exception $e) {
$this->handleException($e);
throw $e;
} catch (\Exception $e) {
$e = new Exception($e->getMessage(), $e->getCode(), $e);
$this->handleException($e);
throw $e;
}
}