public function renderModuleStatus(AphrontRequest $request) { $viewer = $request->getViewer(); $handlers = AphrontRequestExceptionHandler::getAllHandlers(); $rows = array(); foreach ($handlers as $key => $handler) { $rows[] = array($handler->getRequestExceptionHandlerPriority(), $key, $handler->getRequestExceptionHandlerDescription()); } return id(new AphrontTableView($rows))->setHeaders(array(pht('Priority'), pht('Class'), pht('Description')))->setColumnClasses(array(null, 'pri', 'wide')); }
/** * Convert an exception which has escaped the controller into a response. * * This method delegates exception handling to available subclasses of * @{class:AphrontRequestExceptionHandler}. * * @param Exception Exception which needs to be handled. * @return wild Response or response producer, or null if no available * handler can produce a response. * @task exception */ private function handleException(Exception $ex) { $handlers = AphrontRequestExceptionHandler::getAllHandlers(); $request = $this->getRequest(); foreach ($handlers as $handler) { if ($handler->canHandleRequestException($request, $ex)) { $response = $handler->handleRequestException($request, $ex); $this->validateErrorHandlerResponse($handler, $response); return $response; } } throw $ex; }