public function exception( $message, $code = 0, $prevException = null, $className = null) {
    $class = $this->getCompatibleClass( $className );

    $this->defExcLastErrorMessage = $message;
    $this->defExcLastError = $code;

    $exception = [
      'time' => microtime( true ),
      'class' => $class,
      'code' => $code,
      'message' => $message,
    ];

    $this->defExcErrors [] = $exception;
    DeferredExceptionsGlobal::$defExcErrorsGlobal [] = $exception;

    if( $this->useExceptions() ){
      throw new $class( $message, $code, $prevException);
    }
  }