dromara/Sa-Token · error · SaTokenException
10032
10032
Error message
注册的侦听器不可以为空
What it means
SaTokenException (code 10032) thrown by SaTokenEventCenter.registerListener(SaTokenListener) when the listener argument is null. A null listener would throw NPE later during every event broadcast, so registration rejects it up front.
Source
Thrown at sa-token-core/src/main/java/cn/dev33/satoken/listener/SaTokenEventCenter.java:72
/**
* 重置侦听器集合
* @param listenerList /
*/
public static void setListenerList(List<SaTokenListener> listenerList) {
if(listenerList == null) {
throw new SaTokenException("重置的侦听器集合不可以为空").setCode(SaErrorCode.CODE_10031);
}
SaTokenEventCenter.listenerList = listenerList;
}
/**
* 注册一个侦听器
* @param listener /
*/
public static void registerListener(SaTokenListener listener) {
if(listener == null) {
throw new SaTokenException("注册的侦听器不可以为空").setCode(SaErrorCode.CODE_10032);
}
listenerList.add(listener);
}
/**
* 注册一组侦听器
* @param listenerList /
*/
public static void registerListenerList(List<SaTokenListener> listenerList) {
if(listenerList == null) {
throw new SaTokenException("注册的侦听器集合不可以为空").setCode(SaErrorCode.CODE_10031);
}
for (SaTokenListener listener : listenerList) {
if(listener == null) {
throw new SaTokenException("注册的侦听器不可以为空").setCode(SaErrorCode.CODE_10032);
}
}
SaTokenEventCenter.listenerList.addAll(listenerList);View on GitHub (pinned to ac2c7f6e94)
Solutions
- Null-check before registering: if (listener != null) SaTokenEventCenter.registerListener(listener)
- Fix the bean/provider so it never yields null (fail bean creation loudly instead)
- Filter nulls when bulk-registering: listeners.stream().filter(Objects::nonNull).forEach(SaTokenEventCenter::registerListener)
Example fix
// before
SaTokenEventCenter.registerListener(context.getBean("myListener", SaTokenListener.class)); // bean missing -> null -> 10032
// after
SaTokenListener l = context.getBeanProvider(SaTokenListener.class).getIfAvailable();
if (l != null) SaTokenEventCenter.registerListener(l); Defensive patterns
Strategy: validation
Validate before calling
if (listener != null) {
SaTokenEventCenter.registerListener(listener);
} Prevention
- Null-check listener references (especially DI-provided beans) before registering
- Fail bean construction loudly when a required listener cannot be created
- Filter nulls when registering from collections
When it happens
Trigger: Calling SaTokenEventCenter.registerListener(null) — commonly from a DI container or startup hook where the listener bean failed to instantiate (returned null) or a conditionally created listener was null.
Common situations: Registering a bean obtained from a context that has not initialized it yet; conditional listener creation (if (useCustom) listener = new ... else null) then unconditional registration; framework integration code looping over a list containing nulls without filtering.
Related errors
AI-assisted analysis of dromara/Sa-Token@ac2c7f6e94 (2026-08-14).
Data as JSON: /api/errors/f61d3d3c7b54d4a9.
Report an issue: GitHub.