Interface ErrorHandler

Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface ErrorHandler
编辑器错误处理器。 用于自定义错误处理逻辑,如记录日志、发送告警等。

返回值语义

handleError(EditorError) 方法的返回值决定错误的传播行为:

  • true - 错误已完全处理,停止传播,不会触发 EditorErrorEvent
  • false - 错误未完全处理,继续传播,将触发 EditorErrorEvent

使用示例

基础用法 - 记录日志但不阻止传播

editor.setErrorHandler(error -> {
    logger.error("CKEditor error [{}]: {}", error.getCode(), error.getMessage());
    return false; // 继续传播,允许其他监听器处理
});

条件处理 - 只拦截特定错误

editor.setErrorHandler(error -> {
    if ("NETWORK_ERROR".equals(error.getCode())) {
        // 网络错误自动重试,不传播给用户
        retryService.scheduleRetry();
        return true; // 已处理,停止传播
    }
    return false; // 其他错误继续传播
});

链式处理 - 组合多个处理器

ErrorHandler logger = ErrorHandler.logging(log);
ErrorHandler alerter = error -> {
    if (error.getSeverity() == ErrorSeverity.FATAL) {
        alertService.sendAlert(error.getMessage());
        return true;
    }
    return false;
};
// 先记录日志,再发送告警
editor.setErrorHandler(ErrorHandler.compose(logger, alerter));

最佳实践

  • 日志记录器通常应返回 false,允许其他处理器继续处理
  • 只有在错误被完全解决(如自动重试成功)时才返回 true
  • 对于致命错误 (FATAL),通常应让其传播以便 UI 能够响应
  • 使用 compose(ErrorHandler...) 组合多个处理器时,顺序很重要
See Also:
  • Method Details

    • handleError

      boolean handleError(EditorErrorEvent.EditorError error)
      处理编辑器错误。

      此方法在 EditorErrorEvent 触发之前被调用, 提供了拦截和处理错误的机会。

      Parameters:
      error - 错误详情,包含错误代码、消息、严重程度等信息
      Returns:
      true 表示错误已处理完毕,停止传播(不触发事件); false 表示错误未处理或需要继续传播(触发 EditorErrorEvent
    • logging

      static ErrorHandler logging(Logger logger)
      创建记录日志的错误处理器
      Parameters:
      logger - 日志记录器
      Returns:
      错误处理器实例
    • compose

      static ErrorHandler compose(ErrorHandler... handlers)
      组合多个错误处理器
      Parameters:
      handlers - 处理器列表
      Returns:
      组合后的处理器