如何在zend 2中的异常上创建内部服务器错误

In zend 2, how can I create an internal server error whenever an exception occurs regardless of the controller that is related to that exception?

With internal server error I only mean setting the status code to 500!

In your onBootstrap() of your Module.php attach an Event to listen for dispatch error.

$eventManager = $e->getApplication()->getEventManager();
$eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function($event){
  $response = $event->getResponse();
  $response->setStatusCode(500);
  return $response;
});

If you throw an error in listener of MvcEvent::EVENT_ROUTE or MvcEvent::EVENT_DISPATCH then you have to catch exception by yourself.

 public function onDispatch(MvcEvent $event)
{
    $routeMatch       = $event->getRouteMatch();
    $controllerName   = $routeMatch->getParam('controller', 'not-found');
    /** @var Application $application */
    $application      = $event->getApplication();
    $events           = $application->getEventManager();
    $route            = $routeMatch->getMatchedRouteName();
    $request          = $event->getRequest();
    $controllerLoader = $application->getServiceManager()->get('ControllerManager');

    if ($controllerLoader->has($controllerName)) {
        $controller = $controllerLoader->get($controllerName);
        try {
            if ($route == "requests" && $request instanceof Request && $request->getMethod() == 'POST') {
                $this->checkAuthRequest($request);
            }
        } catch (\Exception $ex) {
            $event->setError($application::ERROR_EXCEPTION)
                ->setController($controllerName)
                ->setControllerClass(get_class($controller))
                ->setParam('exception', $ex);
            $events->trigger(MvcEvent::EVENT_DISPATCH_ERROR, $event);
        }
    }
}