function captureException(E $e, $data=null, $logger=null, $vars=null) {
        if (in_array(get_class($e), $this->exclude)) {
            return null;
        }
        if ($data === null) {
            $data = [];
        }
        $eOriginal = $e; /** @var E $eOriginal */
        do {
			$isDFE = $e instanceof DFE;
            $exc_data = [
            	'type' => $isDFE ? $e->sentryType() : get_class($e)
				,'value' => $this->serializer->serialize($isDFE ? $e->messageSentry() : $e->getMessage())
			];
            /**'exception'
             * Exception::getTrace doesn't store the point at where the exception
             * was thrown, so we have to stuff it in ourselves. Ugh.
             */
            $trace = $e->getTrace();
            /**
			 * 2016-12-22
			 * Убираем @see \Magento\Framework\App\ErrorHandler
			 * 2016-12-23
			 * И @see Breadcrumbs\ErrorHandler тоже убираем.
			 */
            /** @var bool $needAddFaceFrame */
            $needAddFakeFrame = !self::needSkipFrame($trace[0]);
			while (self::needSkipFrame($trace[0])) {
				array_shift($trace);
			}
            if ($needAddFakeFrame) {
				$frame_where_exception_thrown = array(
					'file' => $e->getFile(),
					'line' => $e->getLine(),
				);
				array_unshift($trace, $frame_where_exception_thrown);
			}
            $exc_data['stacktrace'] = array(
                'frames' => Stacktrace::get_stack_info(
                    $trace, $this->trace, $vars, $this->message_limit, $this->prefixes,
                    $this->app_path, $this->excluded_app_paths, $this->serializer, $this->reprSerializer
                ),
            );
            $exceptions[] = $exc_data;
        } while ($e = $e->getPrevious());
        $data['exception'] = array('values' => array_reverse($exceptions),);
        if ($logger !== null) {
            $data['logger'] = $logger;
        }
        if (empty($data['level'])) {
            if (method_exists($eOriginal, 'getSeverity')) {
                $data['level'] = $this->translateSeverity($eOriginal->getSeverity());
            }
            else {
                $data['level'] = self::ERROR;
            }
        }
        return $this->capture($data, $trace, $vars);
    }