code: def __init__(  # pylint: disable=too-many-arguments
      self,
      sql_json_execution_context: SqlJsonExecutionContext,
      error_type: SupersetErrorType | None = None,
      reason_message: str | None = None,
      exception: Exception | None = None,
      suggestion_help_msg: str | None = None,
  ) -> None:
      self.sql_json_execution_context = sql_json_execution_context
      self.failed_reason_msg = self._get_reason(
          reason_message, exception
      )
      self.suggestion_help_msg = suggestion_help_msg
      if error_type is None:
          if exception is not None:
              if (
                  hasattr(exception, "error_type")
                  and exception.error_type is not None
              ):
                  error_type = exception.error_type
              elif hasattr(exception, "error") and isinstance(
                  exception.error, SupersetError
              ):
                  error_type = exception.error.error_type
          else:
              error_type = SupersetErrorType.GENERIC_BACKEND_ERROR
  
      super().__init__(self._generate_message(), exception, error_type)
  
file_path: superset/superset/sqllab/exceptions.py
imports: from __future__ import annotations
  import os
  from typing import TYPE_CHECKING
  from flask_babel import lazy_gettext
  from superset.errors import SupersetError, SupersetErrorType
  from superset.exceptions import SupersetException
label_desc: Use image node_id 1 to create a new SqlLabException object from inherited base classes: SupersetException with example: obj = SqlLabException(sql_json_execution_context, error_type, reason_message, exception, suggestion_help_msg)