package tech.easyflow.common.web.error;

import jakarta.servlet.http.HttpServletRequest;

/**
 * 为单个请求提供可选的异常到公共错误契约映射。
 */
@FunctionalInterface
public interface RequestErrorProfile {

    /** Servlet 请求属性名。 */
    String ATTRIBUTE_NAME =
            RequestErrorProfile.class.getName() + ".profile";

    /**
     * 将异常转换为受控错误响应。
     *
     * @param request 当前请求
     * @param exception 原始异常
     * @return 错误映射；不处理该异常时返回 {@code null}
     */
    WebErrorMapping map(
            HttpServletRequest request,
            Exception exception);
}
