reactor-core/src/main/java/reactor/core/publisher/Hooks.java
public static void onOperatorError(String key, BiFunction<? super Throwable, Object, ? extends Throwable> onOperatorError) {
		Objects.requireNonNull(key, "key");
		Objects.requireNonNull(onOperatorError, "onOperatorError");
		log.debug("Hooking onOperatorError: {}", key);
		synchronized (log) {
			onOperatorErrorHooks.put(key, onOperatorError);
			onOperatorErrorHook = createOrUpdateOpErrorHook(onOperatorErrorHooks.values());
		}
	}
public static void onOperatorError(String key, BiFunction<? super Throwable, Object, ? extends Throwable> onOperatorError) {
		Objects.requireNonNull(key, "key");
		Objects.requireNonNull(onOperatorError, "onOperatorError");
		log.debug("Hooking onOperatorError: {}", key);
		synchronized (log) {
			onOperatorErrorHooks.put(key, onOperatorError);
			onOperatorErrorHook = createOrUpdateOpErrorHook(onOperatorErrorHooks.values());
		}
	}
public static void onOperatorError ( String key , BiFunction < ? super Throwable , Object , ? extends Throwable > onOperatorError ) { Objects . requireNonNull ( key , "key" ) ; Objects . requireNonNull ( onOperatorError , "onOperatorError" ) ; log . debug ( "Hooking onOperatorError: {}" , key ) ; synchronized ( log ) { onOperatorErrorHooks . put ( key , onOperatorError ) ; onOperatorErrorHook = createOrUpdateOpErrorHook ( onOperatorErrorHooks . values ( ) ) ; } }
Add or replace a named custom error mapping, overriding the default one. Custom
mapping can be an accumulation of several sub-hooks each subsequently added via this
method.
<p>
Note that invoking this method twice with the same key will replace the old sub-hook
with that name, but keep the execution order (eg. A-h1, B-h2, A-h3 will keep A-B
execution order, leading to hooks h3 then h2 being executed). Removing a particular
key using {@link #resetOnOperatorError(String)} then adding it back will result in
the execution order changing (the later sub-hook being executed last).
Can be fully reset via {@link #resetOnOperatorError()}.
<p>
For reference, the default mapping is to unwrap the exception and, if the second
parameter is another exception, to add it to the first as a suppressed.

@param key the key for the sub-hook to add/replace
@param onOperatorError an operator error {@link BiFunction} mapper, returning an arbitrary exception
given the failure and optionally some original context (data or error).

@see #onOperatorError(String, BiFunction)
@see #resetOnOperatorError(String)
@see #resetOnOperatorError()
Add or replace a named custom error mapping overriding the default one . Custom mapping can be an accumulation of several sub - hooks each subsequently added via this method . <p > Note that invoking this method twice with the same key will replace the old sub - hook with that name but keep the execution order ( eg . A - h1 B - h2 A - h3 will keep A - B execution order leading to hooks h3 then h2 being executed ) . Removing a particular key using { @link #resetOnOperatorError ( String ) } then adding it back will result in the execution order changing ( the later sub - hook being executed last ) . Can be fully reset via { @link #resetOnOperatorError () } . <p > For reference the default mapping is to unwrap the exception and if the second parameter is another exception to add it to the first as a suppressed .